summaryrefslogtreecommitdiff
path: root/src/SomhairlesDream.Frontend/Bindings.fs
diff options
context:
space:
mode:
Diffstat (limited to 'src/SomhairlesDream.Frontend/Bindings.fs')
-rw-r--r--src/SomhairlesDream.Frontend/Bindings.fs28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/SomhairlesDream.Frontend/Bindings.fs b/src/SomhairlesDream.Frontend/Bindings.fs
index 9dbfa00..a0276cc 100644
--- a/src/SomhairlesDream.Frontend/Bindings.fs
+++ b/src/SomhairlesDream.Frontend/Bindings.fs
@@ -8,6 +8,7 @@ type ThreeVector =
abstract x: float with get, set
abstract y: float with get, set
abstract z: float with get, set
+ abstract length: unit -> float
[<Erase>]
type ThreeNode =
@@ -19,6 +20,22 @@ type ThreeNode =
abstract background: obj with get, set
[<Erase>]
+type ThreeBox3 =
+ abstract setFromObject: node: ThreeNode -> ThreeBox3
+ abstract isEmpty: unit -> bool
+ abstract getCenter: target: ThreeVector -> ThreeVector
+ abstract getSize: target: ThreeVector -> ThreeVector
+
+[<Erase>]
+type ThreeCamera =
+ inherit ThreeNode
+ abstract fov: float with get, set
+ abstract aspect: float with get, set
+ abstract near: float with get, set
+ abstract far: float with get, set
+ abstract updateProjectionMatrix: unit -> unit
+
+[<Erase>]
type ThreeRenderer =
abstract setPixelRatio: ratio: float -> unit
abstract setSize: width: float * height: float * updateStyle: bool -> unit
@@ -71,7 +88,16 @@ let createScene () : ThreeNode = jsNative
let createGroup () : ThreeNode = jsNative
[<Emit("new THREE.PerspectiveCamera($0, $1, $2, $3)")>]
-let createPerspectiveCamera (fieldOfView: float, aspect: float, nearPlane: float, farPlane: float) : ThreeNode = jsNative
+let createPerspectiveCamera (fieldOfView: float, aspect: float, nearPlane: float, farPlane: float) : ThreeCamera = jsNative
+
+[<Emit("new THREE.Box3()")>]
+let createBox3 () : ThreeBox3 = jsNative
+
+[<Emit("new THREE.Vector3()")>]
+let createVector3 () : ThreeVector = jsNative
+
+[<Emit("window.SOMHAIRLES_VIEWER = { camera: $0, scene: $1, group: $2, canvas: $3 }")>]
+let exposeViewerDebug (camera: ThreeCamera) (scene: ThreeNode) (group: ThreeNode) (canvas: obj) : unit = jsNative
[<Emit("new THREE.WebGLRenderer($0)")>]
let createRenderer (options: obj) : ThreeRenderer = jsNative