diff options
Diffstat (limited to 'src/SomhairlesDream.Frontend/Bindings.fs')
| -rw-r--r-- | src/SomhairlesDream.Frontend/Bindings.fs | 28 |
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 |
