├── .gitignore ├── AUTHORS ├── CHANGELOG.md ├── README.md ├── analysis_options.yaml ├── build.yaml ├── example ├── example.dart ├── index.html ├── nyanlooped.ogg └── nyanslow.ogg ├── lib ├── src │ └── three │ │ ├── archive │ │ └── three.d.dart_r73 │ │ ├── three_canvasrenderer.dart │ │ ├── three_colladaLoader.dart │ │ ├── three_copyshader.dart │ │ ├── three_core.dart │ │ ├── three_css3drenderer.dart │ │ ├── three_ctmloader.dart │ │ ├── three_ddsloader.dart │ │ ├── three_editorcontrols.dart │ │ ├── three_effectcomposer.dart │ │ ├── three_examples.dart │ │ ├── three_fbxloader.dart │ │ ├── three_filmpass.dart │ │ ├── three_firstpersoncontrols.dart │ │ ├── three_maskpass.dart │ │ ├── three_mtlloader.dart │ │ ├── three_objloader.dart │ │ ├── three_octree.dart │ │ ├── three_orbitcontrols.dart │ │ ├── three_orthographictrackballcontrols.dart │ │ ├── three_outlinepass.dart │ │ ├── three_projector.dart │ │ ├── three_renderpass.dart │ │ ├── three_shaderpass.dart │ │ ├── three_smaapass.dart │ │ ├── three_tgaloader.dart │ │ ├── three_trackballcontrols.dart │ │ ├── three_transformcontrols.dart │ │ ├── three_vrcontrols.dart │ │ └── three_vreffect.dart └── three.dart ├── pubspec.yaml ├── tool └── convert.command └── typescript ├── three-FirstPersonControls.d.ts ├── three-FirstPersonControls.dart ├── three-canvasrenderer.d.ts ├── three-canvasrenderer.dart ├── three-colladaLoader.d.ts ├── three-colladaLoader.dart ├── three-copyshader.d.ts ├── three-copyshader.dart ├── three-core.d.ts ├── three-core.dart ├── three-css3drenderer.d.ts ├── three-css3drenderer.dart ├── three-ctmloader.d.ts ├── three-ctmloader.dart ├── three-ddsloader.d.ts ├── three-ddsloader.dart ├── three-editorcontrols.d.ts ├── three-editorcontrols.dart ├── three-effectcomposer.d.ts ├── three-effectcomposer.dart ├── three-examples.d.ts ├── three-examples.dart ├── three-fbxloader.d.ts ├── three-fbxloader.dart ├── three-filmpass.d.ts ├── three-filmpass.dart ├── three-maskpass.d.ts ├── three-maskpass.dart ├── three-mtlloader.d.ts ├── three-mtlloader.dart ├── three-objloader.d.ts ├── three-objloader.dart ├── three-octree.d.ts ├── three-octree.dart ├── three-orbitcontrols.d.ts ├── three-orbitcontrols.dart ├── three-orthographictrackballcontrols.d.ts ├── three-orthographictrackballcontrols.dart ├── three-outlinepass.d.ts ├── three-outlinepass.dart ├── three-projector.d.ts ├── three-projector.dart ├── three-renderpass.d.ts ├── three-renderpass.dart ├── three-shaderpass.d.ts ├── three-shaderpass.dart ├── three-smaapass.d.ts ├── three-smaapass.dart ├── three-tgaloader.d.ts ├── three-tgaloader.dart ├── three-trackballcontrols.d.ts ├── three-trackballcontrols.dart ├── three-transformcontrols.d.ts ├── three-transformcontrols.dart ├── three-vrcontrols.d.ts ├── three-vrcontrols.dart ├── three-vreffect.d.ts └── three-vreffect.dart /.gitignore: -------------------------------------------------------------------------------- 1 | .dart_tool/ 2 | .idea 3 | .DS_Store 4 | cache/ 5 | .packages 6 | packages 7 | pubspec.lock 8 | build 9 | .buildlog 10 | .pub/ 11 | .settings/ -------------------------------------------------------------------------------- /AUTHORS: -------------------------------------------------------------------------------- 1 | # Below is a list of people and organizations that have contributed 2 | # to the dts-converter project. Names should be added to the list like so: 3 | # 4 | # Name/Organization 5 | 6 | Nils Döhring 7 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 0.2.0-dev (2018-06-19) 2 | 3 | * Dart 2.0 ready. 4 | * Switched to [dart_js_facade_gen](https://github.com/dart-lang/js_facade_gen) as build system. 5 | * Before trying this yourself, please note that generated results for three contain errors that require quite some time to go through and fix. 6 | 7 | 8 | ## 0.1.0 9 | 10 | * zero errors 11 | * successful [first demo](http://acanvas.sounddesignz.com/dart/threejs-interop) (ported from threejs site) 12 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # threejs Dart Facade 2 | 3 | This is a Dart-JS interop facade for the THREE.js 3D library (version r92). 4 | 5 | Generated with [js-facade-gen](https://github.com/dart-lang/js_facade_gen), 6 | which takes TypeScript .d.ts definitions as input. [THREE definition](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/master/three) taken from DefinitelyTyped. 7 | 8 | *The threejs Dart Facade requires a Dart 2.0.0-dev SDK* 9 | 10 | ### Usage 11 | 12 | Add a dependency in your pubspec.yaml 13 | 14 | # dependencies: 15 | # threejs_facade: 16 | # git: https://github.com/block-forest/threejs-dart-facade 17 | 18 | ### Examples 19 | 20 | The [THREE Dart-JS interop Demo](http://acanvas.sounddesignz.com/dart/threejs-interop). 21 | 22 | Or, clone this project and run the example scene yourself: 23 | 24 | $> pub global activate webdev 25 | $> webdev serve example 26 | 27 | ### Updating definitions with *dart_js_facade_gen* 28 | 29 | * Before trying this yourself, please note that generated results for three contain errors that require quite some time to go through and fix. The *typescript/* directory has the original converted files (with errors). 30 | * Install [dart_js_facade_gen](https://github.com/dart-lang/js_facade_gen). 31 | * Download https://cdn.babylonjs.com/babylon.d.ts to lib/src/babylon/ 32 | * Run: 33 | 34 | $> dart_js_facade_gen --destination=lib/src/three --basePath=lib/src/three/ three_core.d.ts 35 | $> dart_js_facade_gen --destination=lib/src/three --basePath=lib/src/three/ three_example.d.ts 36 | $> # and so on ... 37 | 38 | -------------------------------------------------------------------------------- /analysis_options.yaml: -------------------------------------------------------------------------------- 1 | analyzer: 2 | strong-mode: 3 | implicit-casts: true 4 | implicit-dynamic: true 5 | errors: 6 | unused_element: info 7 | unused_import: info 8 | unused_local_variable: error 9 | dead_code: error 10 | override_on_non_overriding_method: error 11 | exclude: 12 | - 'lib/src/three/archive/**' 13 | - 'tool/**' 14 | - 'typescript/**' -------------------------------------------------------------------------------- /build.yaml: -------------------------------------------------------------------------------- 1 | # Read about `build.yaml` at https://pub.dartlang.org/packages/build_config 2 | targets: 3 | 4 | $default: 5 | sources: 6 | {"exclude" : ["bin/**"]} 7 | builders: 8 | build_web_compilers|dart2js_archive_extractor: 9 | options: 10 | filter_outputs: true 11 | build_web_compilers|entrypoint: 12 | generate_for: 13 | - example/example.dart 14 | dev_options: 15 | compiler: dartdevc 16 | release_options: 17 | compiler: dart2js 18 | dart2js_args: 19 | # See https://webdev.dartlang.org/tools/dart2js#size-and-speed-options 20 | # - --dump-info 21 | # - --fast-startup 22 | - --minify 23 | - --no-frequency-based-minification 24 | - --no-source-maps 25 | - --show-package-warnings 26 | - --trust-primitives 27 | - --trust-type-annotations -------------------------------------------------------------------------------- /example/example.dart: -------------------------------------------------------------------------------- 1 | import 'dart:html'; 2 | import 'dart:math' as Math; 3 | import 'package:threejs_facade/three.dart'; 4 | 5 | Math.Random rand = new Math.Random(); 6 | 7 | DivElement container; 8 | WebGLRenderer renderer; 9 | Scene scene; 10 | PerspectiveCamera camera; 11 | 12 | Object3D poptart; 13 | Object3D feet; 14 | Object3D face; 15 | Object3D tail; 16 | 17 | List stars; 18 | num numStars = 10; 19 | 20 | Object3D rainbow; 21 | Object3D rainChunk; 22 | num numRainChunks = 30; 23 | 24 | num mouseX = 0; 25 | num mouseY = 0; 26 | num windowHalfX = window.innerWidth / 2; 27 | num windowHalfY = window.innerHeight / 2; 28 | 29 | num deltaSum = 0; 30 | num tick = 0; 31 | num frame = 0; 32 | bool running = true; 33 | 34 | AudioElement song = new AudioElement(); 35 | AudioElement song2 = new AudioElement(); 36 | 37 | void main() { 38 | document.body.children.add(song); 39 | document.body.children.add(song2); 40 | 41 | song.src = "nyanlooped.ogg"; 42 | song2.src = "nyanslow.ogg"; 43 | song.loop = true; 44 | song2.loop = true; 45 | song.play(); 46 | 47 | document.onMouseMove.listen(onDocumentMouseMove); 48 | document.onMouseDown.listen(onDocumentMouseDown); 49 | 50 | init(); 51 | animate(0); 52 | } 53 | 54 | void init() { 55 | container = new DivElement(); 56 | document.body.children.add(container); 57 | 58 | camera = new PerspectiveCamera(45.0, window.innerWidth / window.innerHeight, 0.1, 10000.0); 59 | camera.position.z = 30.0; 60 | camera.position.x = 0.0; 61 | camera.position.y = 0.0; 62 | 63 | scene = new Scene(); 64 | // TODO: FogExp2 does not inherit correctly. 65 | scene.fog = new FogExp2(0x003366, 0.0095); 66 | 67 | //POPTART 68 | poptart = new Object3D(); 69 | // object x y z w h d color 70 | helper(poptart, 0, -2, -1, 21, 14, 3, 0x222222); 71 | helper(poptart, 1, -1, -1, 19, 16, 3, 0x222222); 72 | helper(poptart, 2, 0, -1, 17, 18, 3, 0x222222); 73 | 74 | helper(poptart, 1, -2, -1.5, 19, 14, 4, 0xffcc99); 75 | helper(poptart, 2, -1, -1.5, 17, 16, 4, 0xffcc99); 76 | 77 | helper(poptart, 2, -4, 2, 17, 10, .6, 0xff99ff); 78 | helper(poptart, 3, -3, 2, 15, 12, .6, 0xff99ff); 79 | helper(poptart, 4, -2, 2, 13, 14, .6, 0xff99ff); 80 | 81 | helper(poptart, 4, -4, 2, 1, 1, .7, 0xff3399); 82 | helper(poptart, 9, -3, 2, 1, 1, .7, 0xff3399); 83 | helper(poptart, 12, -3, 2, 1, 1, .7, 0xff3399); 84 | helper(poptart, 16, -5, 2, 1, 1, .7, 0xff3399); 85 | helper(poptart, 8, -7, 2, 1, 1, .7, 0xff3399); 86 | helper(poptart, 5, -9, 2, 1, 1, .7, 0xff3399); 87 | helper(poptart, 9, -10, 2, 1, 1, .7, 0xff3399); 88 | helper(poptart, 3, -11, 2, 1, 1, .7, 0xff3399); 89 | helper(poptart, 7, -13, 2, 1, 1, .7, 0xff3399); 90 | helper(poptart, 4, -14, 2, 1, 1, .7, 0xff3399); 91 | 92 | poptart.position.x = -10.5; 93 | poptart.position.y = 9.0; 94 | scene.add(poptart); 95 | 96 | //FEET 97 | feet = new Object3D(); 98 | helper(feet, 0, -2, .49, 3, 3, 1, 0x222222); 99 | helper(feet, 1, -1, .49, 3, 3, 1, 0x222222); 100 | helper(feet, 1, -2, -.01, 2, 2, 2, 0x999999); 101 | helper(feet, 2, -1, -.01, 2, 2, 2, 0x999999); 102 | 103 | helper(feet, 6, -2, -.5, 3, 3, 1, 0x222222); 104 | helper(feet, 6, -2, -.5, 4, 2, 1, 0x222222); 105 | helper(feet, 7, -2, -.99, 2, 2, 2, 0x999999); 106 | 107 | helper(feet, 16, -3, .49, 3, 2, 1, 0x222222); 108 | helper(feet, 15, -2, .49, 3, 2, 1, 0x222222); 109 | helper(feet, 15, -2, -.01, 2, 1, 2, 0x999999); 110 | helper(feet, 16, -3, -.01, 2, 1, 2, 0x999999); 111 | 112 | helper(feet, 21, -3, -.5, 3, 2, 1, 0x222222); 113 | helper(feet, 20, -2, -.5, 3, 2, 1, 0x222222); 114 | helper(feet, 20, -2, -.99, 2, 1, 2, 0x999999); 115 | helper(feet, 21, -3, -.99, 2, 1, 2, 0x999999); 116 | 117 | feet.position.x = -12.5; 118 | feet.position.y = -6.0; 119 | scene.add(feet); 120 | 121 | //TAIL 122 | tail = new Object3D(); 123 | helper(tail, 0, 0, -.25, 4, 3, 1.5, 0x222222); 124 | helper(tail, 1, -1, -.25, 4, 3, 1.5, 0x222222); 125 | helper(tail, 2, -2, -.25, 4, 3, 1.5, 0x222222); 126 | helper(tail, 3, -3, -.25, 4, 3, 1.5, 0x222222); 127 | helper(tail, 1, -1, -.5, 2, 1, 2, 0x999999); 128 | helper(tail, 2, -2, -.5, 2, 1, 2, 0x999999); 129 | helper(tail, 3, -3, -.5, 2, 1, 2, 0x999999); 130 | helper(tail, 4, -4, -.5, 2, 1, 2, 0x999999); 131 | 132 | tail.position.x = -16.5; 133 | tail.position.y = 2.0; 134 | scene.add(tail); 135 | 136 | //FACE 137 | face = new Object3D(); 138 | helper(face, 2, -3, -3, 12, 9, 4, 0x222222); 139 | helper(face, 0, -5, 0, 16, 5, 1, 0x222222); 140 | helper(face, 1, -1, 0, 4, 10, 1, 0x222222); 141 | helper(face, 11, -1, 0, 4, 10, 1, 0x222222); 142 | helper(face, 3, -11, 0, 10, 2, 1, 0x222222); 143 | helper(face, 2, 0, 0, 2, 2, 1, 0x222222); 144 | helper(face, 4, -2, 0, 2, 2, 1, 0x222222); 145 | helper(face, 12, 0, 0, 2, 2, 1, 0x222222); 146 | helper(face, 10, -2, 0, 2, 2, 1, 0x222222); 147 | 148 | helper(face, 1, -5, .5, 14, 5, 1, 0x999999); 149 | helper(face, 3, -4, .5, 10, 8, 1, 0x999999); 150 | helper(face, 2, -1, .5, 2, 10, 1, 0x999999); 151 | helper(face, 12, -1, .5, 2, 10, 1, 0x999999); 152 | helper(face, 4, -2, .5, 1, 2, 1, 0x999999); 153 | helper(face, 5, -3, .5, 1, 1, 1, 0x999999); 154 | helper(face, 11, -2, .5, 1, 2, 1, 0x999999); 155 | helper(face, 10, -3, .5, 1, 1, 1, 0x999999); 156 | //Eyes 157 | helper(face, 4, -6, .6, 2, 2, 1, 0x222222); 158 | helper(face, 11, -6, .6, 2, 2, 1, 0x222222); 159 | helper(face, 3.99, -5.99, .6, 1.01, 1.01, 1.01, 0xffffff); 160 | helper(face, 10.99, -5.99, .6, 1.01, 1.01, 1.01, 0xffffff); 161 | //MOUTH 162 | helper(face, 5, -10, .6, 7, 1, 1, 0x222222); 163 | helper(face, 5, -9, .6, 1, 2, 1, 0x222222); 164 | helper(face, 8, -9, .6, 1, 2, 1, 0x222222); 165 | helper(face, 11, -9, .6, 1, 2, 1, 0x222222); 166 | //CHEEKS 167 | helper(face, 2, -8, .6, 2, 2, .91, 0xff9999); 168 | helper(face, 13, -8, .6, 2, 2, .91, 0xff9999); 169 | 170 | face.position.x = -.5; 171 | face.position.y = 4.0; 172 | face.position.z = 4.0; 173 | scene.add(face); 174 | 175 | //RAINBOW 176 | rainbow = new Object3D(); 177 | for (var c = 0; c < numRainChunks - 1; c++) { 178 | var yOffset = 8; 179 | if (c % 2 == 1) yOffset = 7; 180 | var xOffset = (-c * 8) - 16.5; 181 | helper(rainbow, xOffset, yOffset, 0, 8, 3, 1, 0xff0000); 182 | helper(rainbow, xOffset, yOffset - 3, 0, 8, 3, 1, 0xff9900); 183 | helper(rainbow, xOffset, yOffset - 6, 0, 8, 3, 1, 0xffff00); 184 | helper(rainbow, xOffset, yOffset - 9, 0, 8, 3, 1, 0x33ff00); 185 | helper(rainbow, xOffset, yOffset - 12, 0, 8, 3, 1, 0x0099ff); 186 | helper(rainbow, xOffset, yOffset - 15, 0, 8, 3, 1, 0x6633ff); 187 | } 188 | scene.add(rainbow); 189 | 190 | rainChunk = new Object3D(); 191 | helper(rainChunk, -16.5, 7, 0, 8, 3, 1, 0xff0000); 192 | helper(rainChunk, -16.5, 4, 0, 8, 3, 1, 0xff9900); 193 | helper(rainChunk, -16.5, 1, 0, 8, 3, 1, 0xffff00); 194 | helper(rainChunk, -16.5, -2, 0, 8, 3, 1, 0x33ff00); 195 | helper(rainChunk, -16.5, -5, 0, 8, 3, 1, 0x0099ff); 196 | helper(rainChunk, -16.5, -8, 0, 8, 3, 1, 0x6633ff); 197 | rainChunk.position.x -= (8 * (numRainChunks - 1)); 198 | scene.add(rainChunk); 199 | 200 | stars = new List(); 201 | for (var state = 0; state < 6; state++) { 202 | stars.add(new List()); 203 | for (var c = 0; c < numStars; c++) { 204 | var star = new Object3D(); 205 | star.position.x = rand.nextDouble() * 200 - 100; 206 | star.position.y = rand.nextDouble() * 200 - 100; 207 | star.position.z = rand.nextDouble() * 200 - 100; 208 | buildStar(star, state); 209 | scene.add(star); 210 | stars[state].add(star); 211 | } 212 | } 213 | 214 | var pointLight = new PointLight(0xFFFFFF); 215 | pointLight.position.z = 1000.0; 216 | scene.add(pointLight); 217 | 218 | renderer = new WebGLRenderer(); 219 | renderer.setSize(window.innerWidth, window.innerHeight, true); 220 | container.nodes.add(renderer.domElement); 221 | } 222 | 223 | void animate(num t) { 224 | window.requestAnimationFrame(animate); 225 | render(t); 226 | } 227 | 228 | void render(num t) { 229 | var delta = t; //clock.getDelta(); 230 | if (running) deltaSum += delta; 231 | if (deltaSum > .07) { 232 | deltaSum = deltaSum % .07; 233 | frame = (frame + 1) % 12; 234 | for (var c = 0; c < numStars; c++) { 235 | var tempX = stars[5][c].position.x, tempY = stars[5][c].position.y, tempZ = stars[5][c].position.z; 236 | for (var state = 5; state > 0; state--) { 237 | var star = stars[state][c]; 238 | var star2 = stars[state - 1][c]; 239 | star.position.x = star2.position.x - 8; 240 | star.position.y = star2.position.y; 241 | star.position.z = star2.position.z; 242 | 243 | if (star.position.x < -100) { 244 | star.position.x += 200; 245 | star.position.y = rand.nextDouble() * 200 - 100; 246 | star.position.z = rand.nextDouble() * 200 - 100; 247 | } 248 | } 249 | stars[0][c].position.x = tempX; 250 | stars[0][c].position.y = tempY; 251 | stars[0][c].position.z = tempZ; 252 | } 253 | switch (frame) { 254 | case 0: //2nd frame 255 | face.position.x++; 256 | feet.position.x++; 257 | break; 258 | case 1: 259 | face.position.y--; 260 | feet.position.x++; 261 | feet.position.y--; 262 | poptart.position.y--; 263 | rainbow.position.x -= 9.0; 264 | rainChunk.position.x += (8.0 * (numRainChunks - 1)) - 1; 265 | break; 266 | case 2: 267 | feet.position.x--; 268 | break; 269 | case 3: 270 | face.position.x--; 271 | feet.position.x--; 272 | rainbow.position.x += 9.0; 273 | rainChunk.position.x -= (8.0 * (numRainChunks - 1)) - 1; 274 | break; 275 | case 4: 276 | face.position.y++; 277 | break; 278 | case 5: 279 | poptart.position.y++; 280 | feet.position.y++; 281 | rainbow.position.x -= 9.0; 282 | rainChunk.position.x += (8.0 * (numRainChunks - 1)) - 1; 283 | break; 284 | case 6: //8th frame 285 | face.position.x++; 286 | feet.position.x++; 287 | break; 288 | case 7: 289 | poptart.position.y--; 290 | face.position.y--; 291 | feet.position.x++; 292 | feet.position.y--; 293 | rainbow.position.x += 9.0; 294 | rainChunk.position.x -= (8.0 * (numRainChunks - 1)) - 1; 295 | break; 296 | case 8: 297 | feet.position.x--; 298 | break; 299 | case 9: 300 | face.position.x--; 301 | feet.position.x--; 302 | rainbow.position.x -= 9.0; 303 | rainChunk.position.x += (8.0 * (numRainChunks - 1)) - 1; 304 | break; 305 | case 10: 306 | face.position.y++; 307 | break; 308 | case 11: //1st frame 309 | poptart.position.y++; 310 | feet.position.y++; 311 | rainbow.position.x += 9.0; 312 | rainChunk.position.x -= (8.0 * (numRainChunks - 1)) - 1; 313 | break; 314 | } 315 | } 316 | camera.position.x += (mouseX - camera.position.x) * .005; 317 | camera.position.y += (-mouseY - camera.position.y) * .005; 318 | camera.lookAt(scene.position); 319 | renderer.render(scene, camera, null, false); 320 | } 321 | 322 | void helper(o, x, y, z, w, h, d, c) { 323 | MeshLambertMaterialParameters mat = new MeshLambertMaterialParameters()..color = c; 324 | var material = new MeshLambertMaterial(mat); 325 | var geometry = new BoxGeometry(w.toDouble(), h.toDouble(), d.toDouble(), 1, 1, 1); 326 | var mesh = new Mesh(geometry, material); 327 | mesh.position.x = x.toDouble() + (w.toDouble() / 2.0); 328 | mesh.position.y = y.toDouble() - (h.toDouble() / 2.0); 329 | mesh.position.z = z.toDouble() + (d.toDouble() / 2.0); 330 | o.add(mesh); 331 | } 332 | 333 | void buildStar(star, state) { 334 | switch (state) { 335 | case 0: 336 | helper(star, 0, 0, 0, 1, 1, 1, 0xffffff); 337 | break; 338 | case 1: 339 | helper(star, 1, 0, 0, 1, 1, 1, 0xffffff); 340 | helper(star, -1, 0, 0, 1, 1, 1, 0xffffff); 341 | helper(star, 0, 1, 0, 1, 1, 1, 0xffffff); 342 | helper(star, 0, -1, 0, 1, 1, 1, 0xffffff); 343 | break; 344 | case 2: 345 | helper(star, 1, 0, 0, 2, 1, 1, 0xffffff); 346 | helper(star, -2, 0, 0, 2, 1, 1, 0xffffff); 347 | helper(star, 0, 2, 0, 1, 2, 1, 0xffffff); 348 | helper(star, 0, -1, 0, 1, 2, 1, 0xffffff); 349 | break; 350 | case 3: 351 | helper(star, 0, 0, 0, 1, 1, 1, 0xffffff); 352 | helper(star, 2, 0, 0, 2, 1, 1, 0xffffff); 353 | helper(star, -3, 0, 0, 2, 1, 1, 0xffffff); 354 | helper(star, 0, 3, 0, 1, 2, 1, 0xffffff); 355 | helper(star, 0, -2, 0, 1, 2, 1, 0xffffff); 356 | break; 357 | case 4: 358 | helper(star, 0, 3, 0, 1, 1, 1, 0xffffff); 359 | helper(star, 2, 2, 0, 1, 1, 1, 0xffffff); 360 | helper(star, 3, 0, 0, 1, 1, 1, 0xffffff); 361 | helper(star, 2, -2, 0, 1, 1, 1, 0xffffff); 362 | helper(star, 0, -3, 0, 1, 1, 1, 0xffffff); 363 | helper(star, -2, -2, 0, 1, 1, 1, 0xffffff); 364 | helper(star, -3, 0, 0, 1, 1, 1, 0xffffff); 365 | helper(star, -2, 2, 0, 1, 1, 1, 0xffffff); 366 | break; 367 | case 5: 368 | helper(star, 2, 0, 0, 1, 1, 1, 0xffffff); 369 | helper(star, -2, 0, 0, 1, 1, 1, 0xffffff); 370 | helper(star, 0, 2, 0, 1, 1, 1, 0xffffff); 371 | helper(star, 0, -2, 0, 1, 1, 1, 0xffffff); 372 | break; 373 | } 374 | } 375 | 376 | void onDocumentMouseMove(event) { 377 | mouseX = (event.client.x - windowHalfX); 378 | mouseY = (event.client.y - windowHalfY); 379 | } 380 | 381 | void onDocumentMouseDown(event) { 382 | running = !running; 383 | if (running) { 384 | song.play(); 385 | song2.pause(); 386 | } else { 387 | song.pause(); 388 | song2.play(); 389 | } 390 | } 391 | -------------------------------------------------------------------------------- /example/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 3D Nyan Cat!!!! 6 | 7 | 8 | 34 | 35 | 36 | 37 | 38 | 39 | -------------------------------------------------------------------------------- /example/nyanlooped.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/block-forest/threejs-dart-facade/5c282039303c779fa0d70e4dd8d7cac247f24241/example/nyanlooped.ogg -------------------------------------------------------------------------------- /example/nyanslow.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/block-forest/threejs-dart-facade/5c282039303c779fa0d70e4dd8d7cac247f24241/example/nyanslow.ogg -------------------------------------------------------------------------------- /lib/src/three/three_canvasrenderer.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.canvasrenderer; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" 6 | show Camera, Color, Material, MaterialParameters, Plane, Renderer, Scene; 7 | import "package:func/func.dart"; 8 | import "dart:html" show CanvasRenderingContext2D, CanvasElement; 9 | 10 | @anonymous 11 | @JS() 12 | abstract class SpriteCanvasMaterialParameters implements MaterialParameters { 13 | external num get color; 14 | external set color(num v); 15 | external VoidFunc2 get program; 16 | external set program(VoidFunc2 v); 17 | external factory SpriteCanvasMaterialParameters( 18 | {num color, 19 | VoidFunc2 program, 20 | num alphaTest, 21 | num /*enum BlendingDstFactor*/ blendDst, 22 | num blendDstAlpha, 23 | num /*enum BlendingEquation*/ blendEquation, 24 | num blendEquationAlpha, 25 | num /*enum Blending*/ blending, 26 | num /*enum BlendingSrcFactor|enum BlendingDstFactor*/ blendSrc, 27 | num blendSrcAlpha, 28 | bool clipIntersection, 29 | List clippingPlanes, 30 | bool clipShadows, 31 | bool colorWrite, 32 | num /*enum DepthModes*/ depthFunc, 33 | bool depthTest, 34 | bool depthWrite, 35 | bool fog, 36 | bool lights, 37 | String name, 38 | num opacity, 39 | num overdraw, 40 | bool polygonOffset, 41 | num polygonOffsetFactor, 42 | num polygonOffsetUnits, 43 | String /*'highp'|'mediump'|'lowp'|Null*/ precision, 44 | bool premultipliedAlpha, 45 | bool dithering, 46 | bool flatShading, 47 | num /*enum Side*/ side, 48 | bool transparent, 49 | num /*enum Colors*/ vertexColors, 50 | bool visible}); 51 | } 52 | 53 | @JS() 54 | class SpriteCanvasMaterial extends Material { 55 | // @Ignore 56 | SpriteCanvasMaterial.fakeConstructor$() : super.fakeConstructor$(); 57 | external factory SpriteCanvasMaterial( 58 | [SpriteCanvasMaterialParameters parameters]); 59 | external Color get color; 60 | external set color(Color v); 61 | external void program(CanvasRenderingContext2D context, Color color); 62 | } 63 | 64 | @anonymous 65 | @JS() 66 | abstract class CanvasRendererParameters { 67 | external CanvasElement get canvas; 68 | external set canvas(CanvasElement v); 69 | external num get devicePixelRatio; 70 | external set devicePixelRatio(num v); 71 | external bool get alpha; 72 | external set alpha(bool v); 73 | external factory CanvasRendererParameters( 74 | {CanvasElement canvas, num devicePixelRatio, bool alpha}); 75 | } 76 | 77 | @JS() 78 | class CanvasRenderer implements Renderer { 79 | // @Ignore 80 | CanvasRenderer.fakeConstructor$(); 81 | external factory CanvasRenderer([CanvasRendererParameters parameters]); 82 | external CanvasElement get domElement; 83 | external set domElement(CanvasElement v); 84 | external bool get autoClear; 85 | external set autoClear(bool v); 86 | external bool get sortObjects; 87 | external set sortObjects(bool v); 88 | external bool get sortElements; 89 | external set sortElements(bool v); 90 | external dynamic /*{render: {vertices: number; faces: number;};}*/ get info; 91 | external set info( 92 | dynamic /*{render: {vertices: number; faces: number;};}*/ v); 93 | external void supportsVertexTextures(); 94 | external void setFaceCulling(); 95 | external num getPixelRatio(); 96 | external void setPixelRatio(num value); 97 | external void setSize(num width, num height, [bool updateStyle]); 98 | external void setViewport(num x, num y, num width, num height); 99 | external void setScissor(); 100 | external void enableScissorTest(); 101 | external void setClearColor(dynamic /*Color|String|num*/ color, 102 | [num opacity]); 103 | 104 | /// setClearColor(color: string, opacity?: number): void; 105 | /// setClearColor(color: number, opacity?: number): void; 106 | external void setClearColorHex(num hex, [num alpha]); 107 | external Color getClearColor(); 108 | external num getClearAlpha(); 109 | external num getMaxAnisotropy(); 110 | external void clear(); 111 | external void clearColor(); 112 | external void clearDepth(); 113 | external void clearStencil(); 114 | external void render(Scene scene, Camera camera); 115 | } 116 | -------------------------------------------------------------------------------- /lib/src/three/three_colladaLoader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.colladaLoader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Scene; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | @anonymous 9 | @JS() 10 | abstract class ColladaLoaderReturnType {} 11 | 12 | @JS() 13 | class ColladaModel { 14 | // @Ignore 15 | ColladaModel.fakeConstructor$(); 16 | external List get animations; 17 | external set animations(List v); 18 | external dynamic get kinematics; 19 | external set kinematics(dynamic v); 20 | external Scene get scene; 21 | external set scene(Scene v); 22 | external dynamic get JS$library; 23 | external set JS$library(dynamic v); 24 | } 25 | 26 | @JS() 27 | class ColladaLoader { 28 | // @Ignore 29 | ColladaLoader.fakeConstructor$(); 30 | external factory ColladaLoader(); 31 | external void load(String url, void onLoad(ColladaModel model), 32 | [void onProgress(ProgressEvent request), void onError(ErrorEvent event)]); 33 | external void setCrossOrigin(dynamic value); 34 | external ColladaModel parse(String text); 35 | } 36 | -------------------------------------------------------------------------------- /lib/src/three/three_copyshader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.copyshader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Shader; 6 | 7 | @JS() 8 | external Shader get CopyShader; 9 | @JS() 10 | external set CopyShader(Shader v); 11 | -------------------------------------------------------------------------------- /lib/src/three/three_css3drenderer.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.css3drenderer; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Object3D, Scene, Camera; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class CSS3DObject extends Object3D { 10 | // @Ignore 11 | CSS3DObject.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory CSS3DObject(dynamic element); 13 | external dynamic get element; 14 | external set element(dynamic v); 15 | } 16 | 17 | @JS() 18 | class CSS3DSprite extends CSS3DObject { 19 | // @Ignore 20 | CSS3DSprite.fakeConstructor$() : super.fakeConstructor$(); 21 | external factory CSS3DSprite(dynamic element); 22 | } 23 | 24 | /// This renderer does not work in IE. Can be found here for more information. 25 | /// https://github.com/mrdoob/three.js/issues/4783 26 | @JS() 27 | class CSS3DRenderer { 28 | // @Ignore 29 | CSS3DRenderer.fakeConstructor$(); 30 | external factory CSS3DRenderer(); 31 | external HtmlElement get domElement; 32 | external set domElement(HtmlElement v); 33 | external void setSize(num width, num height); 34 | external void render(Scene scene, Camera camera); 35 | } 36 | -------------------------------------------------------------------------------- /lib/src/three/three_ctmloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.ctmloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Loader; 6 | 7 | @JS() 8 | class CTMLoader extends Loader { 9 | // @Ignore 10 | CTMLoader.fakeConstructor$() : super.fakeConstructor$(); 11 | external factory CTMLoader(); 12 | 13 | /// load multiple CTM parts defined in JSON. 14 | external dynamic loadParts(String url, dynamic callback(), 15 | [dynamic parameters]); 16 | 17 | /// Load CTMLoader compressed models 18 | external dynamic load(String url, dynamic callback(dynamic geo), 19 | [dynamic parameters]); 20 | 21 | /// create buffergeometry by ctm file. 22 | external dynamic createModel(String file, dynamic callback()); 23 | } 24 | -------------------------------------------------------------------------------- /lib/src/three/three_ddsloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.ddsloader; 3 | 4 | import "package:js/js.dart"; 5 | import "dart:html" show ImageData; 6 | import "three_core.dart" show CompressedTextureLoader; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/DDSLoader.js 9 | @anonymous 10 | @JS() 11 | abstract class Dds { 12 | external List get mipmaps; 13 | external set mipmaps(List v); 14 | external num get width; 15 | external set width(num v); 16 | external num get height; 17 | external set height(num v); 18 | external num /*enum CompressedPixelFormat*/ get format; 19 | external set format(num /*enum CompressedPixelFormat*/ v); 20 | external num get mipmapCount; 21 | external set mipmapCount(num v); 22 | external factory Dds( 23 | {List mipmaps, 24 | num width, 25 | num height, 26 | num /*enum CompressedPixelFormat*/ format, 27 | num mipmapCount}); 28 | } 29 | 30 | @JS() 31 | class DDSLoader extends CompressedTextureLoader { 32 | // @Ignore 33 | DDSLoader.fakeConstructor$() : super.fakeConstructor$(); 34 | external factory DDSLoader(); 35 | external Dds parse(String buffer, bool loadMipmaps); 36 | } 37 | -------------------------------------------------------------------------------- /lib/src/three/three_editorcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.editorcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show EventDispatcher, Camera, Vector3, Object3D; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class EditorControls extends EventDispatcher { 10 | // @Ignore 11 | EditorControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory EditorControls(Camera object, [HtmlElement domElement]); 13 | external bool get enabled; 14 | external set enabled(bool v); 15 | external Vector3 get center; 16 | external set center(Vector3 v); 17 | external void focus(Object3D target, bool frame); 18 | external void pan(Vector3 delta); 19 | external void zoom(Vector3 delta); 20 | external void rotate(Vector3 delta); 21 | external void dispose(); 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/three/three_effectcomposer.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.effectcomposer; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show WebGLRenderer, WebGLRenderTarget; 6 | import "three_shaderpass.dart" show ShaderPass; 7 | 8 | @JS() 9 | class EffectComposer { 10 | // @Ignore 11 | EffectComposer.fakeConstructor$(); 12 | external factory EffectComposer(WebGLRenderer renderer, 13 | [WebGLRenderTarget renderTarget]); 14 | external WebGLRenderTarget get renderTarget1; 15 | external set renderTarget1(WebGLRenderTarget v); 16 | external WebGLRenderTarget get renderTarget2; 17 | external set renderTarget2(WebGLRenderTarget v); 18 | external WebGLRenderTarget get writeBuffer; 19 | external set writeBuffer(WebGLRenderTarget v); 20 | external WebGLRenderTarget get readBuffer; 21 | external set readBuffer(WebGLRenderTarget v); 22 | external List get passes; 23 | external set passes(List v); 24 | external ShaderPass get copyPass; 25 | external set copyPass(ShaderPass v); 26 | external void swapBuffers(); 27 | external void addPass(dynamic pass); 28 | external void insertPass(dynamic pass, num index); 29 | external void render([num delta]); 30 | external void reset([WebGLRenderTarget renderTarget]); 31 | external void setSize(num width, num height); 32 | } 33 | 34 | @JS() 35 | class Pass { 36 | // @Ignore 37 | Pass.fakeConstructor$(); 38 | 39 | /// if set to true, the pass is processed by the composer 40 | external bool get enabled; 41 | external set enabled(bool v); 42 | 43 | /// if set to true, the pass indicates to swap read and write buffer after rendering 44 | external bool get needsSwap; 45 | external set needsSwap(bool v); 46 | 47 | /// if set to true, the pass clears its buffer before rendering 48 | external bool get clear; 49 | external set clear(bool v); 50 | 51 | /// if set to true, the result of the pass is rendered to screen 52 | external bool get renderToScreen; 53 | external set renderToScreen(bool v); 54 | external void setSize(num width, num height); 55 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 56 | WebGLRenderTarget readBuffer, num delta, 57 | [bool maskActive]); 58 | } 59 | -------------------------------------------------------------------------------- /lib/src/three/three_examples.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.examples; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Shader; 6 | 7 | /// Things from three.js/examples/ that do not (yet) have their own file 8 | @JS() 9 | external dynamic get AWDLoader; 10 | @JS() 11 | external set AWDLoader(dynamic v); 12 | @JS() 13 | external dynamic get OBJLoader2; 14 | @JS() 15 | external set OBJLoader2(dynamic v); 16 | @JS() 17 | external dynamic get STLLoader; 18 | @JS() 19 | external set STLLoader(dynamic v); 20 | @JS() 21 | external dynamic get FlyControls; 22 | @JS() 23 | external set FlyControls(dynamic v); 24 | @JS() 25 | external dynamic get BloomPass; 26 | @JS() 27 | external set BloomPass(dynamic v); 28 | @JS() 29 | external Shader get DotScreenShader; 30 | @JS() 31 | external set DotScreenShader(Shader v); 32 | @JS() 33 | external Shader get RGBShiftShader; 34 | @JS() 35 | external set RGBShiftShader(Shader v); 36 | @JS() 37 | external Shader get FXAAShader; 38 | @JS() 39 | external set FXAAShader(Shader v); 40 | -------------------------------------------------------------------------------- /lib/src/three/three_fbxloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.fbxloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show LoadingManager, Group; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/FBXLoader.js 9 | @JS() 10 | class FBXLoader { 11 | // @Ignore 12 | FBXLoader.fakeConstructor$(); 13 | external factory FBXLoader([LoadingManager manager]); 14 | external LoadingManager get manager; 15 | external set manager(LoadingManager v); 16 | external void load(String url, void onLoad(Group group), 17 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 18 | external Group parse(String FBXText, String resourceDirectory); 19 | } 20 | -------------------------------------------------------------------------------- /lib/src/three/three_filmpass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.filmpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three_effectcomposer.dart" show Pass; 6 | import "three_core.dart" show Scene, Camera, IUniform, Material, Mesh; 7 | 8 | @JS() 9 | class FilmPass extends Pass { 10 | // @Ignore 11 | FilmPass.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory FilmPass(num noiseIntensity, num scanlinesIntensity, 13 | num scanlinesCount, bool grayscale); 14 | external Scene get scene; 15 | external set scene(Scene v); 16 | external Camera get camera; 17 | external set camera(Camera v); 18 | external IUniform get uniforms; 19 | external set uniforms(IUniform v); 20 | external Material get material; 21 | external set material(Material v); 22 | external Mesh get quad; 23 | external set quad(Mesh v); 24 | } 25 | -------------------------------------------------------------------------------- /lib/src/three/three_firstpersoncontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.FirstPersonControls; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Camera, Object3D, Vector3; 6 | import "dart:html" show HtmlElement, CanvasElement, HtmlDocument; 7 | 8 | @JS() 9 | class FirstPersonControls { 10 | // @Ignore 11 | FirstPersonControls.fakeConstructor$(); 12 | external factory FirstPersonControls(Camera object, [HtmlElement domElement]); 13 | external Object3D get object; 14 | external set object(Object3D v); 15 | external Vector3 get target; 16 | external set target(Vector3 v); 17 | external dynamic /*CanvasElement|HtmlDocument*/ get domElement; 18 | external set domElement(dynamic /*CanvasElement|HtmlDocument*/ v); 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external num get movementSpeed; 22 | external set movementSpeed(num v); 23 | external num get lookSpeed; 24 | external set lookSpeed(num v); 25 | external bool get noFly; 26 | external set noFly(bool v); 27 | external bool get lookVertical; 28 | external set lookVertical(bool v); 29 | external bool get autoForward; 30 | external set autoForward(bool v); 31 | external bool get activeLook; 32 | external set activeLook(bool v); 33 | external bool get heightSpeed; 34 | external set heightSpeed(bool v); 35 | external num get heightCoef; 36 | external set heightCoef(num v); 37 | external num get heightMin; 38 | external set heightMin(num v); 39 | external num get heightMax; 40 | external set heightMax(num v); 41 | external bool get constrainVertical; 42 | external set constrainVertical(bool v); 43 | external num get verticalMin; 44 | external set verticalMin(num v); 45 | external num get verticalMax; 46 | external set verticalMax(num v); 47 | external num get autoSpeedFactor; 48 | external set autoSpeedFactor(num v); 49 | external num get mouseX; 50 | external set mouseX(num v); 51 | external num get mouseY; 52 | external set mouseY(num v); 53 | external num get lat; 54 | external set lat(num v); 55 | external num get lon; 56 | external set lon(num v); 57 | external num get phi; 58 | external set phi(num v); 59 | external num get theta; 60 | external set theta(num v); 61 | external bool get moveForward; 62 | external set moveForward(bool v); 63 | external bool get moveBackward; 64 | external set moveBackward(bool v); 65 | external bool get moveLeft; 66 | external set moveLeft(bool v); 67 | external bool get moveRight; 68 | external set moveRight(bool v); 69 | external bool get freeze; 70 | external set freeze(bool v); 71 | external bool get mouseDragOn; 72 | external set mouseDragOn(bool v); 73 | external void update(num delta); 74 | external void dispose(); 75 | } 76 | -------------------------------------------------------------------------------- /lib/src/three/three_maskpass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.maskpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Scene, Camera, WebGLRenderer, WebGLRenderTarget; 6 | 7 | @JS() 8 | class MaskPass { 9 | // @Ignore 10 | MaskPass.fakeConstructor$(); 11 | external factory MaskPass(Scene scene, Camera camera); 12 | external Scene get scene; 13 | external set scene(Scene v); 14 | external Camera get camera; 15 | external set camera(Camera v); 16 | external bool get enabled; 17 | external set enabled(bool v); 18 | external bool get clear; 19 | external set clear(bool v); 20 | external bool get needsSwap; 21 | external set needsSwap(bool v); 22 | external bool get inverse; 23 | external set inverse(bool v); 24 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 25 | WebGLRenderTarget readBuffer, num delta); 26 | } 27 | 28 | @JS() 29 | class ClearMaskPass { 30 | // @Ignore 31 | ClearMaskPass.fakeConstructor$(); 32 | external factory ClearMaskPass(); 33 | external bool get enabled; 34 | external set enabled(bool v); 35 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 36 | WebGLRenderTarget readBuffer, num delta); 37 | } 38 | -------------------------------------------------------------------------------- /lib/src/three/three_mtlloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.mtlloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" 6 | show EventDispatcher, LoadingManager, Material, Texture, BufferGeometry; 7 | import "dart:html" show ProgressEvent, ErrorEvent; 8 | 9 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js 10 | @JS() 11 | class MTLLoader extends EventDispatcher { 12 | // @Ignore 13 | MTLLoader.fakeConstructor$() : super.fakeConstructor$(); 14 | external factory MTLLoader([LoadingManager manager]); 15 | external LoadingManager get manager; 16 | external set manager(LoadingManager v); 17 | external dynamic /*{}*/ get materialOptions; 18 | external set materialOptions(dynamic /*{}*/ v); 19 | external List get materials; 20 | external set materials(List v); 21 | external String get path; 22 | external set path(String v); 23 | external String get texturePath; 24 | external set texturePath(String v); 25 | external bool get crossOrigin; 26 | external set crossOrigin(bool v); 27 | external void load(String url, void onLoad(MaterialCreator materialCreator), 28 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 29 | external MaterialCreator parse(String text); 30 | external void setPath(String path); 31 | external void setTexturePath(String path); 32 | external void setBaseUrl(String path); 33 | external void setCrossOrigin(bool value); 34 | external void setMaterialOptions(dynamic value); 35 | } 36 | 37 | @JS() 38 | class MaterialCreator { 39 | // @Ignore 40 | MaterialCreator.fakeConstructor$(); 41 | external factory MaterialCreator([String baseUrl, dynamic options]); 42 | external String get baseUrl; 43 | external set baseUrl(String v); 44 | external dynamic get options; 45 | external set options(dynamic v); 46 | external dynamic get materialsInfo; 47 | external set materialsInfo(dynamic v); 48 | external dynamic get materials; 49 | external set materials(dynamic v); 50 | external List get materialsArray; 51 | external set materialsArray(List v); 52 | external dynamic get nameLookup; 53 | external set nameLookup(dynamic v); 54 | external num get side; 55 | external set side(num v); 56 | external num get wrap; 57 | external set wrap(num v); 58 | external void setCrossOrigin(bool value); 59 | external void setManager(dynamic value); 60 | external void setMaterials(dynamic materialsInfo); 61 | external dynamic convert(dynamic materialsInfo); 62 | external void preload(); 63 | external Material getIndex(String materialName); 64 | external List getAsArray(); 65 | external Material create(String materialName); 66 | external Material createMaterial_(String materialName); 67 | external dynamic getTextureParams(String value, dynamic matParams); 68 | external Texture loadTexture( 69 | String url, dynamic mapping, void onLoad(BufferGeometry bufferGeometry), 70 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 71 | } 72 | -------------------------------------------------------------------------------- /lib/src/three/three_objloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.objloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show LoadingManager, Material, Group; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | import "three_mtlloader.dart" show MaterialCreator; 8 | 9 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js 10 | @JS() 11 | class OBJLoader { 12 | // @Ignore 13 | OBJLoader.fakeConstructor$(); 14 | external factory OBJLoader([LoadingManager manager]); 15 | external LoadingManager get manager; 16 | external set manager(LoadingManager v); 17 | external dynamic get regexp; 18 | external set regexp(dynamic v); 19 | external List get materials; 20 | external set materials(List v); 21 | external String get path; 22 | external set path(String v); 23 | external void load(String url, void onLoad(Group group), 24 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 25 | external Group parse(String data); 26 | external void setPath(String value); 27 | external void setMaterials(MaterialCreator materials); 28 | external dynamic JS$_createParserState(); 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/three/three_octree.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.octree; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Vector3; 6 | 7 | @JS() 8 | class Octree { 9 | // @Ignore 10 | Octree.fakeConstructor$(); 11 | external factory Octree([dynamic parameters]); 12 | external void update(); 13 | external dynamic add(dynamic object, [dynamic options]); 14 | external dynamic addDeferred(dynamic object, [dynamic options]); 15 | external dynamic addObjectData(dynamic object, dynamic JS$part); 16 | external dynamic remove(dynamic object); 17 | external dynamic extend(Octree octree); 18 | external dynamic rebuild(); 19 | external dynamic updateObject(dynamic object); 20 | external dynamic search( 21 | Vector3 position, num radius, bool organizeByObject, Vector3 direction); 22 | external dynamic setRoot(dynamic root); 23 | external num getDepthEnd(); 24 | external num getNodeCountEnd(); 25 | external num getObjectCountEnd(); 26 | external dynamic toConsole(); 27 | } 28 | -------------------------------------------------------------------------------- /lib/src/three/three_orbitcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.orbitcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Camera, Vector3; 6 | import "dart:html" show HtmlElement, HtmlDocument; 7 | 8 | @JS() 9 | class OrbitControls { 10 | // @Ignore 11 | OrbitControls.fakeConstructor$(); 12 | external factory OrbitControls(Camera object, [HtmlElement domElement]); 13 | external Camera get object; 14 | external set object(Camera v); 15 | external dynamic /*HtmlElement|HtmlDocument*/ get domElement; 16 | external set domElement(dynamic /*HtmlElement|HtmlDocument*/ v); 17 | 18 | /// API 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external Vector3 get target; 22 | external set target(Vector3 v); 23 | 24 | /// deprecated 25 | external Vector3 get center; 26 | external set center(Vector3 v); 27 | external bool get enableZoom; 28 | external set enableZoom(bool v); 29 | external num get zoomSpeed; 30 | external set zoomSpeed(num v); 31 | external num get minDistance; 32 | external set minDistance(num v); 33 | external num get maxDistance; 34 | external set maxDistance(num v); 35 | external bool get enableRotate; 36 | external set enableRotate(bool v); 37 | external num get rotateSpeed; 38 | external set rotateSpeed(num v); 39 | external bool get enablePan; 40 | external set enablePan(bool v); 41 | external num get keyPanSpeed; 42 | external set keyPanSpeed(num v); 43 | external bool get autoRotate; 44 | external set autoRotate(bool v); 45 | external num get autoRotateSpeed; 46 | external set autoRotateSpeed(num v); 47 | external num get minPolarAngle; 48 | external set minPolarAngle(num v); 49 | external num get maxPolarAngle; 50 | external set maxPolarAngle(num v); 51 | external num get minAzimuthAngle; 52 | external set minAzimuthAngle(num v); 53 | external num get maxAzimuthAngle; 54 | external set maxAzimuthAngle(num v); 55 | external bool get enableKeys; 56 | external set enableKeys(bool v); 57 | external dynamic /*{LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}*/ get keys; 58 | external set keys( 59 | dynamic /*{LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}*/ v); 60 | external dynamic /*{ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}*/ get mouseButtons; 61 | external set mouseButtons( 62 | dynamic /*{ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}*/ v); 63 | external bool get enableDamping; 64 | external set enableDamping(bool v); 65 | external num get dampingFactor; 66 | external set dampingFactor(num v); 67 | external void rotateLeft([num angle]); 68 | external void rotateUp([num angle]); 69 | external void panLeft([num distance]); 70 | external void panUp([num distance]); 71 | external void pan(num deltaX, num deltaY); 72 | external void dollyIn(num dollyScale); 73 | external void dollyOut(num dollyScale); 74 | external void update(); 75 | external void reset(); 76 | external void dispose(); 77 | external num getPolarAngle(); 78 | external num getAzimuthalAngle(); 79 | 80 | /// EventDispatcher mixins 81 | external void addEventListener(String type, void listener(dynamic event)); 82 | external void hasEventListener(String type, void listener(dynamic event)); 83 | external void removeEventListener(String type, void listener(dynamic event)); 84 | external void dispatchEvent(dynamic /*{type: string; target: any;}*/ event); 85 | } 86 | -------------------------------------------------------------------------------- /lib/src/three/three_orthographictrackballcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.orthographictrackballcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show EventDispatcher, Camera, Vector3; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class OrthographicTrackballControls extends EventDispatcher { 10 | // @Ignore 11 | OrthographicTrackballControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory OrthographicTrackballControls(Camera object, 13 | [HtmlElement domElement]); 14 | external Camera get object; 15 | external set object(Camera v); 16 | external HtmlElement get domElement; 17 | external set domElement(HtmlElement v); 18 | 19 | /// API 20 | external bool get enabled; 21 | external set enabled(bool v); 22 | external dynamic /*{left: number; top: number; width: number; height: number}*/ get screen; 23 | external set screen( 24 | dynamic /*{left: number; top: number; width: number; height: number}*/ v); 25 | external num get radius; 26 | external set radius(num v); 27 | external num get rotateSpeed; 28 | external set rotateSpeed(num v); 29 | external num get zoomSpeed; 30 | external set zoomSpeed(num v); 31 | external num get panSpeed; 32 | external set panSpeed(num v); 33 | external bool get noRotate; 34 | external set noRotate(bool v); 35 | external bool get noZoom; 36 | external set noZoom(bool v); 37 | external bool get noPan; 38 | external set noPan(bool v); 39 | external bool get noRoll; 40 | external set noRoll(bool v); 41 | external bool get staticMoving; 42 | external set staticMoving(bool v); 43 | external num get dynamicDampingFactor; 44 | external set dynamicDampingFactor(num v); 45 | external List get keys; 46 | external set keys(List v); 47 | external Vector3 get target; 48 | external set target(Vector3 v); 49 | external Vector3 get position0; 50 | external set position0(Vector3 v); 51 | external Vector3 get target0; 52 | external set target0(Vector3 v); 53 | external Vector3 get up0; 54 | external set up0(Vector3 v); 55 | external num get left0; 56 | external set left0(num v); 57 | external num get right0; 58 | external set right0(num v); 59 | external num get top0; 60 | external set top0(num v); 61 | external num get bottom0; 62 | external set bottom0(num v); 63 | external void update(); 64 | external void reset(); 65 | external void checkDistances(); 66 | external void zoomCamera(); 67 | external void panCamera(); 68 | external void rotateCamera(); 69 | external void handleResize(); 70 | external void handleEvent(dynamic event); 71 | } 72 | -------------------------------------------------------------------------------- /lib/src/three/three_outlinepass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.outlinepass; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Vector2, Scene, Camera, Object3D, Color; 6 | 7 | @JS() 8 | class OutlinePass { 9 | // @Ignore 10 | OutlinePass.fakeConstructor$(); 11 | external factory OutlinePass(Vector2 size, Scene scene, Camera camer, 12 | [List selectedObjects]); 13 | external List get selectedObjects; 14 | external set selectedObjects(List v); 15 | external Camera get renderCamera; 16 | external set renderCamera(Camera v); 17 | external Color get visibleEdgeColor; 18 | external set visibleEdgeColor(Color v); 19 | external Color get hiddenEdgeColor; 20 | external set hiddenEdgeColor(Color v); 21 | external num get edgeGlow; 22 | external set edgeGlow(num v); 23 | external bool get usePatternTexture; 24 | external set usePatternTexture(bool v); 25 | external num get edgeThickness; 26 | external set edgeThickness(num v); 27 | external num get edgeStrength; 28 | external set edgeStrength(num v); 29 | external num get downSampleRatio; 30 | external set downSampleRatio(num v); 31 | external num get pulsePeriod; 32 | external set pulsePeriod(num v); 33 | external Vector2 get resolution; 34 | external set resolution(Vector2 v); 35 | } 36 | -------------------------------------------------------------------------------- /lib/src/three/three_projector.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.projector; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" 6 | show Vector3, Color, Material, Vector2, Vector4, Camera, Scene; 7 | 8 | /// Renderers / Renderables ///////////////////////////////////////////////////////////////////// 9 | @JS() 10 | class RenderableObject { 11 | // @Ignore 12 | RenderableObject.fakeConstructor$(); 13 | external factory RenderableObject(); 14 | external num get id; 15 | external set id(num v); 16 | external dynamic get object; 17 | external set object(dynamic v); 18 | external num get z; 19 | external set z(num v); 20 | } 21 | 22 | @JS() 23 | class RenderableFace { 24 | // @Ignore 25 | RenderableFace.fakeConstructor$(); 26 | external factory RenderableFace(); 27 | external num get id; 28 | external set id(num v); 29 | external RenderableVertex get v1; 30 | external set v1(RenderableVertex v); 31 | external RenderableVertex get v2; 32 | external set v2(RenderableVertex v); 33 | external RenderableVertex get v3; 34 | external set v3(RenderableVertex v); 35 | external Vector3 get normalModel; 36 | external set normalModel(Vector3 v); 37 | external List get vertexNormalsModel; 38 | external set vertexNormalsModel(List v); 39 | external num get vertexNormalsLength; 40 | external set vertexNormalsLength(num v); 41 | external Color get color; 42 | external set color(Color v); 43 | external Material get material; 44 | external set material(Material v); 45 | external List> get uvs; 46 | external set uvs(List> v); 47 | external num get z; 48 | external set z(num v); 49 | } 50 | 51 | @JS() 52 | class RenderableVertex { 53 | // @Ignore 54 | RenderableVertex.fakeConstructor$(); 55 | external factory RenderableVertex(); 56 | external Vector3 get position; 57 | external set position(Vector3 v); 58 | external Vector3 get positionWorld; 59 | external set positionWorld(Vector3 v); 60 | external Vector4 get positionScreen; 61 | external set positionScreen(Vector4 v); 62 | external bool get visible; 63 | external set visible(bool v); 64 | external void copy(RenderableVertex vertex); 65 | } 66 | 67 | @JS() 68 | class RenderableLine { 69 | // @Ignore 70 | RenderableLine.fakeConstructor$(); 71 | external factory RenderableLine(); 72 | external num get id; 73 | external set id(num v); 74 | external RenderableVertex get v1; 75 | external set v1(RenderableVertex v); 76 | external RenderableVertex get v2; 77 | external set v2(RenderableVertex v); 78 | external List get vertexColors; 79 | external set vertexColors(List v); 80 | external Material get material; 81 | external set material(Material v); 82 | external num get z; 83 | external set z(num v); 84 | } 85 | 86 | @JS() 87 | class RenderableSprite { 88 | // @Ignore 89 | RenderableSprite.fakeConstructor$(); 90 | external factory RenderableSprite(); 91 | external num get id; 92 | external set id(num v); 93 | external dynamic get object; 94 | external set object(dynamic v); 95 | external num get x; 96 | external set x(num v); 97 | external num get y; 98 | external set y(num v); 99 | external num get z; 100 | external set z(num v); 101 | external num get rotation; 102 | external set rotation(num v); 103 | external Vector2 get scale; 104 | external set scale(Vector2 v); 105 | external Material get material; 106 | external set material(Material v); 107 | } 108 | 109 | /// Projects points between spaces. 110 | @JS() 111 | class Projector { 112 | // @Ignore 113 | Projector.fakeConstructor$(); 114 | external factory Projector(); 115 | 116 | /// deprecated. 117 | external Vector3 projectVector(Vector3 vector, Camera camera); 118 | 119 | /// deprecated. 120 | external Vector3 unprojectVector(Vector3 vector, Camera camera); 121 | 122 | /// Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. 123 | /// If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). 124 | external dynamic 125 | /*{ 126 | objects: Object3D[]; // Mesh, Line or other object 127 | sprites: Object3D[]; // Sprite or Particle 128 | lights: Light[]; 129 | elements: Face3[]; // Line, Particle, Face3 or Face4 130 | }*/ 131 | projectScene(Scene scene, Camera camera, bool sortObjects, [bool sortElements]); 132 | } 133 | -------------------------------------------------------------------------------- /lib/src/three/three_renderpass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.renderpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" 6 | show Scene, Camera, Material, Color, WebGLRenderer, WebGLRenderTarget; 7 | 8 | @JS() 9 | class RenderPass { 10 | // @Ignore 11 | RenderPass.fakeConstructor$(); 12 | external factory RenderPass(Scene scene, Camera camera, 13 | [Material overrideMaterial, 14 | dynamic /*Color|String|num*/ clearColor, 15 | num clearAlpha]); 16 | external Scene get scene; 17 | external set scene(Scene v); 18 | external Camera get camera; 19 | external set camera(Camera v); 20 | external Material get overrideMaterial; 21 | external set overrideMaterial(Material v); 22 | external dynamic /*Color|String|num*/ get clearColor; 23 | external set clearColor(dynamic /*Color|String|num*/ v); 24 | external num get clearAlpha; 25 | external set clearAlpha(num v); 26 | external Color get oldClearColor; 27 | external set oldClearColor(Color v); 28 | external num get oldClearAlpha; 29 | external set oldClearAlpha(num v); 30 | external bool get enabled; 31 | external set enabled(bool v); 32 | external bool get clear; 33 | external set clear(bool v); 34 | external bool get needsSwap; 35 | external set needsSwap(bool v); 36 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 37 | WebGLRenderTarget readBuffer, num delta); 38 | } 39 | -------------------------------------------------------------------------------- /lib/src/three/three_shaderpass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.shaderpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" 6 | show 7 | Shader, 8 | ShaderMaterial, 9 | Camera, 10 | Scene, 11 | Mesh, 12 | WebGLRenderer, 13 | WebGLRenderTarget; 14 | 15 | @JS() 16 | class ShaderPass { 17 | // @Ignore 18 | ShaderPass.fakeConstructor$(); 19 | external factory ShaderPass(Shader shader, [String textureID]); 20 | external String get textureID; 21 | external set textureID(String v); 22 | external dynamic get uniforms; 23 | external set uniforms(dynamic v); 24 | external ShaderMaterial get material; 25 | external set material(ShaderMaterial v); 26 | external bool get renderToScreen; 27 | external set renderToScreen(bool v); 28 | external bool get enabled; 29 | external set enabled(bool v); 30 | external bool get needsSwap; 31 | external set needsSwap(bool v); 32 | external bool get clear; 33 | external set clear(bool v); 34 | external Camera get camera; 35 | external set camera(Camera v); 36 | external Scene get scene; 37 | external set scene(Scene v); 38 | external Mesh get quad; 39 | external set quad(Mesh v); 40 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 41 | WebGLRenderTarget readBuffer, num delta); 42 | } 43 | -------------------------------------------------------------------------------- /lib/src/three/three_smaapass.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.smaapass; 3 | 4 | import "package:js/js.dart"; 5 | 6 | @JS() 7 | class SMAAPass { 8 | // @Ignore 9 | SMAAPass.fakeConstructor$(); 10 | external factory SMAAPass(num width, num height); 11 | external bool get renderToScreen; 12 | external set renderToScreen(bool v); 13 | } 14 | -------------------------------------------------------------------------------- /lib/src/three/three_tgaloader.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.tgaloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show LoadingManager, Texture; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/TGALoader.js 9 | @JS() 10 | class TGALoader { 11 | // @Ignore 12 | TGALoader.fakeConstructor$(); 13 | external factory TGALoader([LoadingManager manager]); 14 | external LoadingManager get manager; 15 | external set manager(LoadingManager v); 16 | external Texture load(String url, 17 | [void onLoad(Texture texture), 18 | void onProgress(ProgressEvent event), 19 | void onError(ErrorEvent event)]); 20 | } 21 | -------------------------------------------------------------------------------- /lib/src/three/three_trackballcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.trackballcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show EventDispatcher, Camera, Vector3; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class TrackballControls extends EventDispatcher { 10 | // @Ignore 11 | TrackballControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory TrackballControls(Camera object, [HtmlElement domElement]); 13 | external Camera get object; 14 | external set object(Camera v); 15 | external HtmlElement get domElement; 16 | external set domElement(HtmlElement v); 17 | 18 | /// API 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external dynamic /*{left: number; top: number; width: number; height: number}*/ get screen; 22 | external set screen( 23 | dynamic /*{left: number; top: number; width: number; height: number}*/ v); 24 | external num get rotateSpeed; 25 | external set rotateSpeed(num v); 26 | external num get zoomSpeed; 27 | external set zoomSpeed(num v); 28 | external num get panSpeed; 29 | external set panSpeed(num v); 30 | external bool get noRotate; 31 | external set noRotate(bool v); 32 | external bool get noZoom; 33 | external set noZoom(bool v); 34 | external bool get noPan; 35 | external set noPan(bool v); 36 | external bool get noRoll; 37 | external set noRoll(bool v); 38 | external bool get staticMoving; 39 | external set staticMoving(bool v); 40 | external num get dynamicDampingFactor; 41 | external set dynamicDampingFactor(num v); 42 | external num get minDistance; 43 | external set minDistance(num v); 44 | external num get maxDistance; 45 | external set maxDistance(num v); 46 | external List get keys; 47 | external set keys(List v); 48 | external Vector3 get target; 49 | external set target(Vector3 v); 50 | external Vector3 get position0; 51 | external set position0(Vector3 v); 52 | external Vector3 get target0; 53 | external set target0(Vector3 v); 54 | external Vector3 get up0; 55 | external set up0(Vector3 v); 56 | external void update(); 57 | external void reset(); 58 | external void dispose(); 59 | external void checkDistances(); 60 | external void zoomCamera(); 61 | external void panCamera(); 62 | external void rotateCamera(); 63 | external void handleResize(); 64 | external void handleEvent(dynamic event); 65 | } 66 | -------------------------------------------------------------------------------- /lib/src/three/three_transformcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.transformcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three_core.dart" show Object3D, Camera; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class TransformControls extends Object3D { 10 | // @Ignore 11 | TransformControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory TransformControls(Camera object, [HtmlElement domElement]); 13 | external num get size; 14 | external set size(num v); 15 | external String get space; 16 | external set space(String v); 17 | external Object3D get object; 18 | external set object(Object3D v); 19 | external void update(); 20 | external void detach(); 21 | external void attach(Object3D object); 22 | external String getMode(); 23 | external void setMode(String mode); 24 | external void setSnap(dynamic snap); 25 | external void setSize(num size); 26 | external void setSpace(String space); 27 | external void setTranslationSnap(num size); 28 | external void setRotationSnap(num size); 29 | } 30 | -------------------------------------------------------------------------------- /lib/src/three/three_vrcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.vrcontrols; 3 | 4 | import 'dart:html'; 5 | 6 | import "package:js/js.dart"; 7 | import "three_core.dart" show Camera; 8 | 9 | /// 10 | @JS() 11 | class VRControls { 12 | // @Ignore 13 | VRControls.fakeConstructor$(); 14 | external factory VRControls(Camera camera, [void callback(String param)]); 15 | 16 | /// Update VR Instance Tracking 17 | external void update(); 18 | external void zeroSensor(); 19 | external num get scale; 20 | external set scale(num v); 21 | external void setVRDisplay(VRDisplay display); 22 | } 23 | -------------------------------------------------------------------------------- /lib/src/three/three_vreffect.dart: -------------------------------------------------------------------------------- 1 | @JS("THREE") 2 | library three.vreffect; 3 | 4 | import 'dart:html'; 5 | 6 | import "package:js/js.dart"; 7 | import "three_core.dart" show Renderer, Scene, Camera, Matrix4; 8 | 9 | /// 10 | @JS() 11 | class VREffect { 12 | // @Ignore 13 | VREffect.fakeConstructor$(); 14 | external factory VREffect(Renderer renderer, [void callback(String params)]); 15 | external void render(Scene scene, Camera camera); 16 | external void setSize(num width, num height); 17 | external void setFullScreen(bool flag); 18 | external void startFullscreen(); 19 | external VREffectOffset FovToNDCScaleOffset(VRFov fov); 20 | external Matrix4 FovPortToProjection( 21 | VRFov fov, bool rightHanded, num zNear, num zFar); 22 | external Matrix4 FovToProjection( 23 | VRFov fov, bool rightHanded, num zNear, num zFar); 24 | external dynamic toJSON( 25 | [dynamic /*{ geometries: any, materials: any, textures: any, images: any }*/ meta]); 26 | } 27 | 28 | @anonymous 29 | @JS() 30 | abstract class VRFov { 31 | external num get leftTan; 32 | external set leftTan(num v); 33 | external num get rightTan; 34 | external set rightTan(num v); 35 | external num get upTan; 36 | external set upTan(num v); 37 | external num get downTan; 38 | external set downTan(num v); 39 | external factory VRFov({num leftTan, num rightTan, num upTan, num downTan}); 40 | } 41 | 42 | @anonymous 43 | @JS() 44 | abstract class VREffectOffset { 45 | external num get scale; 46 | external set scale(num v); 47 | external num get offset; 48 | external set offset(num v); 49 | external factory VREffectOffset({num scale, num offset}); 50 | } 51 | -------------------------------------------------------------------------------- /lib/three.dart: -------------------------------------------------------------------------------- 1 | @JS('THREE') 2 | library three; 3 | 4 | import "package:js/js.dart"; 5 | 6 | export 'src/three/three_canvasrenderer.dart'; 7 | export 'src/three/three_colladaLoader.dart'; 8 | export 'src/three/three_copyshader.dart'; 9 | export 'src/three/three_core.dart'; 10 | export 'src/three/three_css3drenderer.dart'; 11 | export 'src/three/three_ctmloader.dart'; 12 | export 'src/three/three_ddsloader.dart'; 13 | export 'src/three/three_editorcontrols.dart'; 14 | export 'src/three/three_effectcomposer.dart'; 15 | export 'src/three/three_examples.dart'; 16 | export 'src/three/three_fbxloader.dart'; 17 | export 'src/three/three_filmpass.dart'; 18 | export 'src/three/three_firstpersoncontrols.dart'; 19 | export 'src/three/three_maskpass.dart'; 20 | export 'src/three/three_mtlloader.dart'; 21 | export 'src/three/three_objloader.dart'; 22 | export 'src/three/three_octree.dart'; 23 | export 'src/three/three_orbitcontrols.dart'; 24 | export 'src/three/three_orthographictrackballcontrols.dart'; 25 | export 'src/three/three_outlinepass.dart'; 26 | export 'src/three/three_projector.dart'; 27 | export 'src/three/three_renderpass.dart'; 28 | export 'src/three/three_shaderpass.dart'; 29 | export 'src/three/three_smaapass.dart'; 30 | export 'src/three/three_tgaloader.dart'; 31 | export 'src/three/three_trackballcontrols.dart'; 32 | export 'src/three/three_transformcontrols.dart'; 33 | export 'src/three/three_vrcontrols.dart'; 34 | export 'src/three/three_vreffect.dart'; -------------------------------------------------------------------------------- /pubspec.yaml: -------------------------------------------------------------------------------- 1 | name: threejs_facade 2 | version: 0.2.0-dev 3 | description: Autogenerated dart js interop facade for the THREE WebGL javascript framework. 4 | author: Nils Döhring 5 | homepage: https://github.com/blockforest/threejs-dart-facade 6 | environment: 7 | sdk: '>=2.0.0-dev.55.0 <2.0.0' 8 | dependencies: 9 | func: ^0.1.0 10 | js: ^0.6.0 11 | dev_dependencies: 12 | #-------- Dart 2.0.0-dev -------- 13 | build_runner: ^0.8.9 14 | build_test: ^0.10.2 15 | build_web_compilers: ^0.4.0+3 16 | -------------------------------------------------------------------------------- /tool/convert.command: -------------------------------------------------------------------------------- 1 | #! /bin/bash 2 | dart_js_facade_gen --destination=. typescript/three-canvasrenderer.d.ts 3 | dart_js_facade_gen --destination=. typescript/three-colladaLoader.d.ts 4 | dart_js_facade_gen --destination=. typescript/three-copyshader.d.ts 5 | dart_js_facade_gen --destination=. typescript/three-core.d.ts 6 | dart_js_facade_gen --destination=. typescript/three-css3drenderer.d.ts 7 | dart_js_facade_gen --destination=. typescript/three-ctmloader.d.ts 8 | dart_js_facade_gen --destination=. typescript/three-ddsloader.d.ts 9 | dart_js_facade_gen --destination=. typescript/three-editorcontrols.d.ts 10 | dart_js_facade_gen --destination=. typescript/three-effectcomposer.d.ts 11 | dart_js_facade_gen --destination=. typescript/three-examples.d.ts 12 | dart_js_facade_gen --destination=. typescript/three-fbxloader.d.ts 13 | dart_js_facade_gen --destination=. typescript/three-filmpass.d.ts 14 | dart_js_facade_gen --destination=. typescript/three-FirstPersonControls.d.ts 15 | dart_js_facade_gen --destination=. typescript/three-maskpass.d.ts 16 | dart_js_facade_gen --destination=. typescript/three-mtlloader.d.ts 17 | dart_js_facade_gen --destination=. typescript/three-objloader.d.ts 18 | dart_js_facade_gen --destination=. typescript/three-octree.d.ts 19 | dart_js_facade_gen --destination=. typescript/three-orbitcontrols.d.ts 20 | dart_js_facade_gen --destination=. typescript/three-orthographictrackballcontrols.d.ts 21 | dart_js_facade_gen --destination=. typescript/three-outlinepass.d.ts 22 | dart_js_facade_gen --destination=. typescript/three-projector.d.ts 23 | dart_js_facade_gen --destination=. typescript/three-renderpass.d.ts 24 | dart_js_facade_gen --destination=. typescript/three-shaderpass.d.ts 25 | dart_js_facade_gen --destination=. typescript/three-smaapass.d.ts 26 | dart_js_facade_gen --destination=. typescript/three-tgaloader.d.ts 27 | dart_js_facade_gen --destination=. typescript/three-trackballcontrols.d.ts 28 | dart_js_facade_gen --destination=. typescript/three-transformcontrols.d.ts 29 | dart_js_facade_gen --destination=. typescript/three-vrcontrols.d.ts 30 | dart_js_facade_gen --destination=. typescript/three-vreffect.d.ts -------------------------------------------------------------------------------- /typescript/three-FirstPersonControls.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Object3D, Vector3 } from "./three-core"; 2 | 3 | export class FirstPersonControls { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | object: Object3D; 7 | target: Vector3; 8 | domElement: HTMLCanvasElement | HTMLDocument; 9 | enabled: boolean; 10 | movementSpeed: number; 11 | lookSpeed: number; 12 | noFly: boolean; 13 | lookVertical: boolean; 14 | autoForward: boolean; 15 | activeLook: boolean; 16 | heightSpeed: boolean; 17 | heightCoef: number; 18 | heightMin: number; 19 | heightMax: number; 20 | constrainVertical: boolean; 21 | verticalMin: number; 22 | verticalMax: number; 23 | autoSpeedFactor: number; 24 | mouseX: number; 25 | mouseY: number; 26 | lat: number; 27 | lon: number; 28 | phi: number; 29 | theta: number; 30 | moveForward: boolean; 31 | moveBackward: boolean; 32 | moveLeft: boolean; 33 | moveRight: boolean; 34 | freeze: boolean; 35 | mouseDragOn: boolean; 36 | 37 | update(delta: number): void; 38 | 39 | dispose(): void; 40 | } 41 | -------------------------------------------------------------------------------- /typescript/three-FirstPersonControls.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_FirstPersonControls; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Camera, Object3D, Vector3; 6 | import "dart:html" show HtmlElement, CanvasElement, HtmlDocument; 7 | 8 | @JS() 9 | class FirstPersonControls { 10 | // @Ignore 11 | FirstPersonControls.fakeConstructor$(); 12 | external factory FirstPersonControls(Camera object, [HtmlElement domElement]); 13 | external Object3D get object; 14 | external set object(Object3D v); 15 | external Vector3 get target; 16 | external set target(Vector3 v); 17 | external dynamic /*CanvasElement|HtmlDocument*/ get domElement; 18 | external set domElement(dynamic /*CanvasElement|HtmlDocument*/ v); 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external num get movementSpeed; 22 | external set movementSpeed(num v); 23 | external num get lookSpeed; 24 | external set lookSpeed(num v); 25 | external bool get noFly; 26 | external set noFly(bool v); 27 | external bool get lookVertical; 28 | external set lookVertical(bool v); 29 | external bool get autoForward; 30 | external set autoForward(bool v); 31 | external bool get activeLook; 32 | external set activeLook(bool v); 33 | external bool get heightSpeed; 34 | external set heightSpeed(bool v); 35 | external num get heightCoef; 36 | external set heightCoef(num v); 37 | external num get heightMin; 38 | external set heightMin(num v); 39 | external num get heightMax; 40 | external set heightMax(num v); 41 | external bool get constrainVertical; 42 | external set constrainVertical(bool v); 43 | external num get verticalMin; 44 | external set verticalMin(num v); 45 | external num get verticalMax; 46 | external set verticalMax(num v); 47 | external num get autoSpeedFactor; 48 | external set autoSpeedFactor(num v); 49 | external num get mouseX; 50 | external set mouseX(num v); 51 | external num get mouseY; 52 | external set mouseY(num v); 53 | external num get lat; 54 | external set lat(num v); 55 | external num get lon; 56 | external set lon(num v); 57 | external num get phi; 58 | external set phi(num v); 59 | external num get theta; 60 | external set theta(num v); 61 | external bool get moveForward; 62 | external set moveForward(bool v); 63 | external bool get moveBackward; 64 | external set moveBackward(bool v); 65 | external bool get moveLeft; 66 | external set moveLeft(bool v); 67 | external bool get moveRight; 68 | external set moveRight(bool v); 69 | external bool get freeze; 70 | external set freeze(bool v); 71 | external bool get mouseDragOn; 72 | external set mouseDragOn(bool v); 73 | external void update(num delta); 74 | external void dispose(); 75 | } 76 | -------------------------------------------------------------------------------- /typescript/three-canvasrenderer.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Camera, 3 | Color, 4 | Material, 5 | MaterialParameters, 6 | Renderer, 7 | Scene 8 | } from "./three-core"; 9 | 10 | export interface SpriteCanvasMaterialParameters extends MaterialParameters { 11 | color?: number; 12 | program?: (context: CanvasRenderingContext2D, color: Color) => void; 13 | } 14 | 15 | export class SpriteCanvasMaterial extends Material { 16 | constructor(parameters?: SpriteCanvasMaterialParameters); 17 | 18 | color: Color; 19 | 20 | program(context: CanvasRenderingContext2D, color: Color): void; 21 | } 22 | 23 | export interface CanvasRendererParameters { 24 | canvas?: HTMLCanvasElement; 25 | devicePixelRatio?: number; 26 | alpha?: boolean; 27 | } 28 | 29 | export class CanvasRenderer implements Renderer { 30 | constructor(parameters?: CanvasRendererParameters); 31 | 32 | domElement: HTMLCanvasElement; 33 | autoClear: boolean; 34 | sortObjects: boolean; 35 | sortElements: boolean; 36 | info: {render: {vertices: number; faces: number;};}; 37 | 38 | supportsVertexTextures(): void; 39 | 40 | setFaceCulling(): void; 41 | 42 | getPixelRatio(): number; 43 | 44 | setPixelRatio(value: number): void; 45 | 46 | setSize(width: number, height: number, updateStyle?: boolean): void; 47 | 48 | setViewport(x: number, y: number, width: number, height: number): void; 49 | 50 | setScissor(): void; 51 | 52 | enableScissorTest(): void; 53 | 54 | setClearColor(color: Color | string | number, opacity?: number): void; 55 | 56 | // setClearColor(color: string, opacity?: number): void; 57 | // setClearColor(color: number, opacity?: number): void; 58 | 59 | setClearColorHex(hex: number, alpha?: number): void; 60 | 61 | getClearColor(): Color; 62 | 63 | getClearAlpha(): number; 64 | 65 | getMaxAnisotropy(): number; 66 | 67 | clear(): void; 68 | 69 | clearColor(): void; 70 | 71 | clearDepth(): void; 72 | 73 | clearStencil(): void; 74 | 75 | render(scene: Scene, camera: Camera): void; 76 | } 77 | -------------------------------------------------------------------------------- /typescript/three-canvasrenderer.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_canvasrenderer; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" 6 | show MaterialParameters, Color, Material, Renderer, Scene, Camera; 7 | import "package:func/func.dart"; 8 | import "dart:html" show CanvasRenderingContext2D, CanvasElement; 9 | 10 | @anonymous 11 | @JS() 12 | abstract class SpriteCanvasMaterialParameters implements MaterialParameters { 13 | external num get color; 14 | external set color(num v); 15 | external VoidFunc2 get program; 16 | external set program(VoidFunc2 v); 17 | external factory SpriteCanvasMaterialParameters( 18 | {num color, 19 | VoidFunc2 program, 20 | num alphaTest, 21 | num /*enum BlendingDstFactor*/ blendDst, 22 | num blendDstAlpha, 23 | num /*enum BlendingEquation*/ blendEquation, 24 | num blendEquationAlpha, 25 | num /*enum Blending*/ blending, 26 | num /*enum BlendingSrcFactor|enum BlendingDstFactor*/ blendSrc, 27 | num blendSrcAlpha, 28 | bool clipIntersection, 29 | List clippingPlanes, 30 | bool clipShadows, 31 | bool colorWrite, 32 | num /*enum DepthModes*/ depthFunc, 33 | bool depthTest, 34 | bool depthWrite, 35 | bool fog, 36 | bool lights, 37 | String name, 38 | num opacity, 39 | num overdraw, 40 | bool polygonOffset, 41 | num polygonOffsetFactor, 42 | num polygonOffsetUnits, 43 | String /*'highp'|'mediump'|'lowp'|Null*/ precision, 44 | bool premultipliedAlpha, 45 | bool dithering, 46 | bool flatShading, 47 | num /*enum Side*/ side, 48 | bool transparent, 49 | num /*enum Colors*/ vertexColors, 50 | bool visible}); 51 | } 52 | 53 | @JS() 54 | class SpriteCanvasMaterial extends Material { 55 | // @Ignore 56 | SpriteCanvasMaterial.fakeConstructor$() : super.fakeConstructor$(); 57 | external factory SpriteCanvasMaterial( 58 | [SpriteCanvasMaterialParameters parameters]); 59 | external Color get color; 60 | external set color(Color v); 61 | external void program(CanvasRenderingContext2D context, Color color); 62 | } 63 | 64 | @anonymous 65 | @JS() 66 | abstract class CanvasRendererParameters { 67 | external CanvasElement get canvas; 68 | external set canvas(CanvasElement v); 69 | external num get devicePixelRatio; 70 | external set devicePixelRatio(num v); 71 | external bool get alpha; 72 | external set alpha(bool v); 73 | external factory CanvasRendererParameters( 74 | {CanvasElement canvas, num devicePixelRatio, bool alpha}); 75 | } 76 | 77 | @JS() 78 | class CanvasRenderer implements Renderer { 79 | // @Ignore 80 | CanvasRenderer.fakeConstructor$(); 81 | external factory CanvasRenderer([CanvasRendererParameters parameters]); 82 | external CanvasElement get domElement; 83 | external set domElement(CanvasElement v); 84 | external bool get autoClear; 85 | external set autoClear(bool v); 86 | external bool get sortObjects; 87 | external set sortObjects(bool v); 88 | external bool get sortElements; 89 | external set sortElements(bool v); 90 | external dynamic /*{render: {vertices: number; faces: number;};}*/ get info; 91 | external set info( 92 | dynamic /*{render: {vertices: number; faces: number;};}*/ v); 93 | external void supportsVertexTextures(); 94 | external void setFaceCulling(); 95 | external num getPixelRatio(); 96 | external void setPixelRatio(num value); 97 | external void setSize(num width, num height, [bool updateStyle]); 98 | external void setViewport(num x, num y, num width, num height); 99 | external void setScissor(); 100 | external void enableScissorTest(); 101 | external void setClearColor(dynamic /*Color|String|num*/ color, 102 | [num opacity]); 103 | 104 | /// setClearColor(color: string, opacity?: number): void; 105 | /// setClearColor(color: number, opacity?: number): void; 106 | external void setClearColorHex(num hex, [num alpha]); 107 | external Color getClearColor(); 108 | external num getClearAlpha(); 109 | external num getMaxAnisotropy(); 110 | external void clear(); 111 | external void clearColor(); 112 | external void clearDepth(); 113 | external void clearStencil(); 114 | external void render(Scene scene, Camera camera); 115 | } 116 | -------------------------------------------------------------------------------- /typescript/three-colladaLoader.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Scene 3 | } from "./three-core"; 4 | 5 | export interface ColladaLoaderReturnType { 6 | } 7 | 8 | export class ColladaModel { 9 | animations: any[]; 10 | kinematics: any; 11 | scene: Scene; 12 | library: any; 13 | } 14 | export class ColladaLoader { 15 | constructor(); 16 | 17 | load(url: string, onLoad: (model: ColladaModel) => void, onProgress?: (request: ProgressEvent) => void, onError?:(event: ErrorEvent) => void): void; 18 | setCrossOrigin(value: any): void; 19 | parse(text: string): ColladaModel; 20 | } -------------------------------------------------------------------------------- /typescript/three-colladaLoader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_colladaLoader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Scene; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | @anonymous 9 | @JS() 10 | abstract class ColladaLoaderReturnType {} 11 | 12 | @JS() 13 | class ColladaModel { 14 | // @Ignore 15 | ColladaModel.fakeConstructor$(); 16 | external List get animations; 17 | external set animations(List v); 18 | external dynamic get kinematics; 19 | external set kinematics(dynamic v); 20 | external Scene get scene; 21 | external set scene(Scene v); 22 | external dynamic get JS$library; 23 | external set JS$library(dynamic v); 24 | } 25 | 26 | @JS() 27 | class ColladaLoader { 28 | // @Ignore 29 | ColladaLoader.fakeConstructor$(); 30 | external factory ColladaLoader(); 31 | external void load(String url, void onLoad(ColladaModel model), 32 | [void onProgress(ProgressEvent request), void onError(ErrorEvent event)]); 33 | external void setCrossOrigin(dynamic value); 34 | external ColladaModel parse(String text); 35 | } 36 | -------------------------------------------------------------------------------- /typescript/three-copyshader.d.ts: -------------------------------------------------------------------------------- 1 | import { Shader } from "./three-core"; 2 | export var CopyShader: Shader; 3 | -------------------------------------------------------------------------------- /typescript/three-copyshader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_copyshader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Shader; 6 | 7 | @JS() 8 | external Shader get CopyShader; 9 | @JS() 10 | external set CopyShader(Shader v); 11 | -------------------------------------------------------------------------------- /typescript/three-css3drenderer.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Object3D, Scene } from "./three-core"; 2 | 3 | export class CSS3DObject extends Object3D { 4 | constructor(element: any); 5 | 6 | element: any; 7 | } 8 | 9 | export class CSS3DSprite extends CSS3DObject { 10 | constructor(element: any); 11 | 12 | } 13 | 14 | // This renderer does not work in IE. Can be found here for more information. 15 | // https://github.com/mrdoob/three.js/issues/4783 16 | export class CSS3DRenderer { 17 | constructor(); 18 | 19 | domElement: HTMLElement; 20 | 21 | setSize(width: number, height: number): void; 22 | 23 | render(scene: Scene, camera: Camera): void; 24 | } 25 | -------------------------------------------------------------------------------- /typescript/three-css3drenderer.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_css3drenderer; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Object3D, Scene, Camera; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class CSS3DObject extends Object3D { 10 | // @Ignore 11 | CSS3DObject.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory CSS3DObject(dynamic element); 13 | external dynamic get element; 14 | external set element(dynamic v); 15 | } 16 | 17 | @JS() 18 | class CSS3DSprite extends CSS3DObject { 19 | // @Ignore 20 | CSS3DSprite.fakeConstructor$() : super.fakeConstructor$(); 21 | external factory CSS3DSprite(dynamic element); 22 | } 23 | 24 | /// This renderer does not work in IE. Can be found here for more information. 25 | /// https://github.com/mrdoob/three.js/issues/4783 26 | @JS() 27 | class CSS3DRenderer { 28 | // @Ignore 29 | CSS3DRenderer.fakeConstructor$(); 30 | external factory CSS3DRenderer(); 31 | external HtmlElement get domElement; 32 | external set domElement(HtmlElement v); 33 | external void setSize(num width, num height); 34 | external void render(Scene scene, Camera camera); 35 | } 36 | -------------------------------------------------------------------------------- /typescript/three-ctmloader.d.ts: -------------------------------------------------------------------------------- 1 | import { Loader } from "./three-core"; 2 | 3 | export class CTMLoader extends Loader { 4 | constructor(); 5 | 6 | /** 7 | * load multiple CTM parts defined in JSON. 8 | * @param url(required) 9 | * @param callback(required) 10 | * @param parameters 11 | */ 12 | loadParts(url: string, callback: () => any, parameters?: any): any; 13 | 14 | /** 15 | * Load CTMLoader compressed models 16 | * @param url(required) 17 | * @param callback(required) 18 | * @param parameters 19 | */ 20 | load(url: string, callback: (geo: any) => any, parameters?: any): any; 21 | 22 | /** 23 | * create buffergeometry by ctm file. 24 | * @param file(required) 25 | * @param callback(required) 26 | */ 27 | createModel(file: string, callback: () => any): any; 28 | } 29 | -------------------------------------------------------------------------------- /typescript/three-ctmloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_ctmloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Loader; 6 | 7 | @JS() 8 | class CTMLoader extends Loader { 9 | // @Ignore 10 | CTMLoader.fakeConstructor$() : super.fakeConstructor$(); 11 | external factory CTMLoader(); 12 | 13 | /// load multiple CTM parts defined in JSON. 14 | external dynamic loadParts(String url, dynamic callback(), 15 | [dynamic parameters]); 16 | 17 | /// Load CTMLoader compressed models 18 | external dynamic load(String url, dynamic callback(dynamic geo), 19 | [dynamic parameters]); 20 | 21 | /// create buffergeometry by ctm file. 22 | external dynamic createModel(String file, dynamic callback()); 23 | } 24 | -------------------------------------------------------------------------------- /typescript/three-ddsloader.d.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/DDSLoader.js 2 | 3 | import { CompressedPixelFormat, CompressedTextureLoader } from "./three-core"; 4 | 5 | export interface Dds { 6 | mipmaps: ImageData[], 7 | width: number, 8 | height: number, 9 | format: CompressedPixelFormat, 10 | mipmapCount: number 11 | } 12 | 13 | export class DDSLoader extends CompressedTextureLoader { 14 | 15 | constructor(); 16 | 17 | parse(buffer: string, loadMipmaps: boolean) : Dds; 18 | 19 | } 20 | -------------------------------------------------------------------------------- /typescript/three-ddsloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_ddsloader; 3 | 4 | import "package:js/js.dart"; 5 | import "dart:html" show ImageData; 6 | import "three-core.dart" show CompressedTextureLoader; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/DDSLoader.js 9 | @anonymous 10 | @JS() 11 | abstract class Dds { 12 | external List get mipmaps; 13 | external set mipmaps(List v); 14 | external num get width; 15 | external set width(num v); 16 | external num get height; 17 | external set height(num v); 18 | external num /*enum CompressedPixelFormat*/ get format; 19 | external set format(num /*enum CompressedPixelFormat*/ v); 20 | external num get mipmapCount; 21 | external set mipmapCount(num v); 22 | external factory Dds( 23 | {List mipmaps, 24 | num width, 25 | num height, 26 | num /*enum CompressedPixelFormat*/ format, 27 | num mipmapCount}); 28 | } 29 | 30 | @JS() 31 | class DDSLoader extends CompressedTextureLoader { 32 | // @Ignore 33 | DDSLoader.fakeConstructor$() : super.fakeConstructor$(); 34 | external factory DDSLoader(); 35 | external Dds parse(String buffer, bool loadMipmaps); 36 | } 37 | -------------------------------------------------------------------------------- /typescript/three-editorcontrols.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, EventDispatcher, Object3D, Vector3 } from "./three-core"; 2 | 3 | export class EditorControls extends EventDispatcher { 4 | 5 | constructor(object: Camera, domElement?: HTMLElement); 6 | 7 | enabled: boolean; 8 | center: Vector3; 9 | 10 | focus(target: Object3D, frame: boolean): void; 11 | 12 | pan(delta: Vector3): void; 13 | 14 | zoom(delta: Vector3): void; 15 | 16 | rotate(delta: Vector3): void; 17 | 18 | dispose(): void; 19 | } 20 | -------------------------------------------------------------------------------- /typescript/three-editorcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_editorcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show EventDispatcher, Camera, Vector3, Object3D; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class EditorControls extends EventDispatcher { 10 | // @Ignore 11 | EditorControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory EditorControls(Camera object, [HtmlElement domElement]); 13 | external bool get enabled; 14 | external set enabled(bool v); 15 | external Vector3 get center; 16 | external set center(Vector3 v); 17 | external void focus(Object3D target, bool frame); 18 | external void pan(Vector3 delta); 19 | external void zoom(Vector3 delta); 20 | external void rotate(Vector3 delta); 21 | external void dispose(); 22 | } 23 | -------------------------------------------------------------------------------- /typescript/three-effectcomposer.d.ts: -------------------------------------------------------------------------------- 1 | import { WebGLRenderTarget, WebGLRenderer } from "./three-core"; 2 | import { ShaderPass } from "./three-shaderpass"; 3 | 4 | export class EffectComposer { 5 | constructor(renderer: WebGLRenderer, renderTarget?: WebGLRenderTarget); 6 | 7 | renderTarget1: WebGLRenderTarget; 8 | renderTarget2: WebGLRenderTarget; 9 | writeBuffer: WebGLRenderTarget; 10 | readBuffer: WebGLRenderTarget; 11 | passes: any[]; 12 | copyPass: ShaderPass; 13 | 14 | swapBuffers(): void; 15 | 16 | addPass(pass: any): void; 17 | 18 | insertPass(pass: any, index: number): void; 19 | 20 | render(delta?: number): void; 21 | 22 | reset(renderTarget?: WebGLRenderTarget): void; 23 | 24 | setSize(width: number, height: number): void; 25 | } 26 | 27 | 28 | export class Pass{ 29 | // if set to true, the pass is processed by the composer 30 | enabled: boolean; 31 | 32 | // if set to true, the pass indicates to swap read and write buffer after rendering 33 | needsSwap: boolean; 34 | 35 | // if set to true, the pass clears its buffer before rendering 36 | clear: boolean; 37 | 38 | // if set to true, the result of the pass is rendered to screen 39 | renderToScreen: boolean; 40 | 41 | setSize(width: number, height:number ): void; 42 | 43 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number, maskActive?: boolean): void; 44 | 45 | } -------------------------------------------------------------------------------- /typescript/three-effectcomposer.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_effectcomposer; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show WebGLRenderer, WebGLRenderTarget; 6 | import "three-shaderpass.dart" show ShaderPass; 7 | 8 | @JS() 9 | class EffectComposer { 10 | // @Ignore 11 | EffectComposer.fakeConstructor$(); 12 | external factory EffectComposer(WebGLRenderer renderer, 13 | [WebGLRenderTarget renderTarget]); 14 | external WebGLRenderTarget get renderTarget1; 15 | external set renderTarget1(WebGLRenderTarget v); 16 | external WebGLRenderTarget get renderTarget2; 17 | external set renderTarget2(WebGLRenderTarget v); 18 | external WebGLRenderTarget get writeBuffer; 19 | external set writeBuffer(WebGLRenderTarget v); 20 | external WebGLRenderTarget get readBuffer; 21 | external set readBuffer(WebGLRenderTarget v); 22 | external List get passes; 23 | external set passes(List v); 24 | external ShaderPass get copyPass; 25 | external set copyPass(ShaderPass v); 26 | external void swapBuffers(); 27 | external void addPass(dynamic pass); 28 | external void insertPass(dynamic pass, num index); 29 | external void render([num delta]); 30 | external void reset([WebGLRenderTarget renderTarget]); 31 | external void setSize(num width, num height); 32 | } 33 | 34 | @JS() 35 | class Pass { 36 | // @Ignore 37 | Pass.fakeConstructor$(); 38 | 39 | /// if set to true, the pass is processed by the composer 40 | external bool get enabled; 41 | external set enabled(bool v); 42 | 43 | /// if set to true, the pass indicates to swap read and write buffer after rendering 44 | external bool get needsSwap; 45 | external set needsSwap(bool v); 46 | 47 | /// if set to true, the pass clears its buffer before rendering 48 | external bool get clear; 49 | external set clear(bool v); 50 | 51 | /// if set to true, the result of the pass is rendered to screen 52 | external bool get renderToScreen; 53 | external set renderToScreen(bool v); 54 | external void setSize(num width, num height); 55 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 56 | WebGLRenderTarget readBuffer, num delta, 57 | [bool maskActive]); 58 | } 59 | -------------------------------------------------------------------------------- /typescript/three-examples.d.ts: -------------------------------------------------------------------------------- 1 | // Things from three.js/examples/ that do not (yet) have their own file 2 | 3 | import { EventDispatcher, Shader } from "./three-core"; 4 | 5 | export var AWDLoader: any; 6 | export var OBJLoader2: any; 7 | export var STLLoader: any; 8 | export var FlyControls: any; 9 | export var BloomPass: any; 10 | export var DotScreenShader: Shader; 11 | export var RGBShiftShader: Shader; 12 | export var FXAAShader: Shader; 13 | -------------------------------------------------------------------------------- /typescript/three-examples.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_examples; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Shader; 6 | 7 | /// Things from three.js/examples/ that do not (yet) have their own file 8 | @JS() 9 | external dynamic get AWDLoader; 10 | @JS() 11 | external set AWDLoader(dynamic v); 12 | @JS() 13 | external dynamic get OBJLoader2; 14 | @JS() 15 | external set OBJLoader2(dynamic v); 16 | @JS() 17 | external dynamic get STLLoader; 18 | @JS() 19 | external set STLLoader(dynamic v); 20 | @JS() 21 | external dynamic get FlyControls; 22 | @JS() 23 | external set FlyControls(dynamic v); 24 | @JS() 25 | external dynamic get BloomPass; 26 | @JS() 27 | external set BloomPass(dynamic v); 28 | @JS() 29 | external Shader get DotScreenShader; 30 | @JS() 31 | external set DotScreenShader(Shader v); 32 | @JS() 33 | external Shader get RGBShiftShader; 34 | @JS() 35 | external set RGBShiftShader(Shader v); 36 | @JS() 37 | external Shader get FXAAShader; 38 | @JS() 39 | external set FXAAShader(Shader v); 40 | -------------------------------------------------------------------------------- /typescript/three-fbxloader.d.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/FBXLoader.js 2 | 3 | import { LoadingManager } from "./three-core"; 4 | import {Group} from "./three-core"; 5 | 6 | export class FBXLoader { 7 | 8 | constructor(manager?: LoadingManager); 9 | manager: LoadingManager; 10 | 11 | load(url: string, onLoad: (group: Group) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; 12 | parse(FBXText: string, resourceDirectory: string) : Group; 13 | 14 | } -------------------------------------------------------------------------------- /typescript/three-fbxloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_fbxloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show LoadingManager, Group; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/FBXLoader.js 9 | @JS() 10 | class FBXLoader { 11 | // @Ignore 12 | FBXLoader.fakeConstructor$(); 13 | external factory FBXLoader([LoadingManager manager]); 14 | external LoadingManager get manager; 15 | external set manager(LoadingManager v); 16 | external void load(String url, void onLoad(Group group), 17 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 18 | external Group parse(String FBXText, String resourceDirectory); 19 | } 20 | -------------------------------------------------------------------------------- /typescript/three-filmpass.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Scene, WebGLRenderTarget, WebGLRenderer, Material, Mesh, IUniform } from "./three-core"; 2 | import {Pass} from "./three-effectcomposer"; 3 | 4 | export class FilmPass extends Pass { 5 | constructor(noiseIntensity: number, scanlinesIntensity: number, scanlinesCount: number, grayscale: boolean); 6 | 7 | scene: Scene; 8 | camera: Camera; 9 | uniforms: IUniform; 10 | material: Material; 11 | quad: Mesh; 12 | 13 | } 14 | -------------------------------------------------------------------------------- /typescript/three-filmpass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_filmpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three-effectcomposer.dart" show Pass; 6 | import "three-core.dart" show Scene, Camera, IUniform, Material, Mesh; 7 | 8 | @JS() 9 | class FilmPass extends Pass { 10 | // @Ignore 11 | FilmPass.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory FilmPass(num noiseIntensity, num scanlinesIntensity, 13 | num scanlinesCount, bool grayscale); 14 | external Scene get scene; 15 | external set scene(Scene v); 16 | external Camera get camera; 17 | external set camera(Camera v); 18 | external IUniform get uniforms; 19 | external set uniforms(IUniform v); 20 | external Material get material; 21 | external set material(Material v); 22 | external Mesh get quad; 23 | external set quad(Mesh v); 24 | } 25 | -------------------------------------------------------------------------------- /typescript/three-maskpass.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Scene, WebGLRenderTarget, WebGLRenderer } from "./three-core"; 2 | 3 | export class MaskPass { 4 | constructor(scene: Scene, camera: Camera); 5 | 6 | scene: Scene; 7 | camera: Camera; 8 | enabled: boolean; 9 | clear: boolean; 10 | needsSwap: boolean; 11 | inverse: boolean; 12 | 13 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; 14 | } 15 | 16 | export class ClearMaskPass { 17 | constructor(); 18 | 19 | enabled: boolean; 20 | 21 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; 22 | } 23 | -------------------------------------------------------------------------------- /typescript/three-maskpass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_maskpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Scene, Camera, WebGLRenderer, WebGLRenderTarget; 6 | 7 | @JS() 8 | class MaskPass { 9 | // @Ignore 10 | MaskPass.fakeConstructor$(); 11 | external factory MaskPass(Scene scene, Camera camera); 12 | external Scene get scene; 13 | external set scene(Scene v); 14 | external Camera get camera; 15 | external set camera(Camera v); 16 | external bool get enabled; 17 | external set enabled(bool v); 18 | external bool get clear; 19 | external set clear(bool v); 20 | external bool get needsSwap; 21 | external set needsSwap(bool v); 22 | external bool get inverse; 23 | external set inverse(bool v); 24 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 25 | WebGLRenderTarget readBuffer, num delta); 26 | } 27 | 28 | @JS() 29 | class ClearMaskPass { 30 | // @Ignore 31 | ClearMaskPass.fakeConstructor$(); 32 | external factory ClearMaskPass(); 33 | external bool get enabled; 34 | external set enabled(bool v); 35 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 36 | WebGLRenderTarget readBuffer, num delta); 37 | } 38 | -------------------------------------------------------------------------------- /typescript/three-mtlloader.d.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js 2 | 3 | 4 | import { Material } from "./three-core"; 5 | import {LoadingManager} from "./three-core"; 6 | import {EventDispatcher} from "./three-core"; 7 | import {BufferGeometry} from "./three-core"; 8 | import {Texture} from "./three-core"; 9 | 10 | export class MTLLoader extends EventDispatcher { 11 | 12 | constructor(manager?: LoadingManager); 13 | manager: LoadingManager; 14 | materialOptions: {}; 15 | materials: Material[]; 16 | path: string; 17 | texturePath: string; 18 | crossOrigin: boolean; 19 | 20 | load(url: string, onLoad: (materialCreator: MaterialCreator) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; 21 | parse(text: string) : MaterialCreator; 22 | setPath(path: string) : void; 23 | setTexturePath(path: string) : void; 24 | setBaseUrl(path: string) : void; 25 | setCrossOrigin(value: boolean) : void; 26 | setMaterialOptions(value: any) : void; 27 | } 28 | 29 | export class MaterialCreator { 30 | 31 | constructor(baseUrl?: string, options?: any); 32 | 33 | baseUrl : string; 34 | options : any; 35 | materialsInfo : any; 36 | materials : any; 37 | materialsArray : Material[]; 38 | nameLookup : any; 39 | side : number; 40 | wrap : number; 41 | 42 | setCrossOrigin( value: boolean ) : void; 43 | setManager( value: any ) : void; 44 | setMaterials( materialsInfo: any ) : void; 45 | convert( materialsInfo: any ) : any; 46 | preload() : void; 47 | getIndex( materialName: string ) : Material; 48 | getAsArray() : Material[]; 49 | create( materialName: string ) : Material; 50 | createMaterial_( materialName: string ) : Material; 51 | getTextureParams( value: string, matParams: any ) : any; 52 | loadTexture(url: string, mapping: any, onLoad: (bufferGeometry: BufferGeometry) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture; 53 | 54 | } 55 | -------------------------------------------------------------------------------- /typescript/three-mtlloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_mtlloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" 6 | show EventDispatcher, LoadingManager, Material, Texture, BufferGeometry; 7 | import "dart:html" show ProgressEvent, ErrorEvent; 8 | 9 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/MTLLoader.js 10 | @JS() 11 | class MTLLoader extends EventDispatcher { 12 | // @Ignore 13 | MTLLoader.fakeConstructor$() : super.fakeConstructor$(); 14 | external factory MTLLoader([LoadingManager manager]); 15 | external LoadingManager get manager; 16 | external set manager(LoadingManager v); 17 | external dynamic /*{}*/ get materialOptions; 18 | external set materialOptions(dynamic /*{}*/ v); 19 | external List get materials; 20 | external set materials(List v); 21 | external String get path; 22 | external set path(String v); 23 | external String get texturePath; 24 | external set texturePath(String v); 25 | external bool get crossOrigin; 26 | external set crossOrigin(bool v); 27 | external void load(String url, void onLoad(MaterialCreator materialCreator), 28 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 29 | external MaterialCreator parse(String text); 30 | external void setPath(String path); 31 | external void setTexturePath(String path); 32 | external void setBaseUrl(String path); 33 | external void setCrossOrigin(bool value); 34 | external void setMaterialOptions(dynamic value); 35 | } 36 | 37 | @JS() 38 | class MaterialCreator { 39 | // @Ignore 40 | MaterialCreator.fakeConstructor$(); 41 | external factory MaterialCreator([String baseUrl, dynamic options]); 42 | external String get baseUrl; 43 | external set baseUrl(String v); 44 | external dynamic get options; 45 | external set options(dynamic v); 46 | external dynamic get materialsInfo; 47 | external set materialsInfo(dynamic v); 48 | external dynamic get materials; 49 | external set materials(dynamic v); 50 | external List get materialsArray; 51 | external set materialsArray(List v); 52 | external dynamic get nameLookup; 53 | external set nameLookup(dynamic v); 54 | external num get side; 55 | external set side(num v); 56 | external num get wrap; 57 | external set wrap(num v); 58 | external void setCrossOrigin(bool value); 59 | external void setManager(dynamic value); 60 | external void setMaterials(dynamic materialsInfo); 61 | external dynamic convert(dynamic materialsInfo); 62 | external void preload(); 63 | external Material getIndex(String materialName); 64 | external List getAsArray(); 65 | external Material create(String materialName); 66 | external Material createMaterial_(String materialName); 67 | external dynamic getTextureParams(String value, dynamic matParams); 68 | external Texture loadTexture( 69 | String url, dynamic mapping, void onLoad(BufferGeometry bufferGeometry), 70 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 71 | } 72 | -------------------------------------------------------------------------------- /typescript/three-objloader.d.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js 2 | 3 | import { Material } from "./three-core"; 4 | import {LoadingManager} from "./three-core"; 5 | import {Group} from "./three-core"; 6 | import {MaterialCreator} from "./three-mtlloader"; 7 | 8 | export class OBJLoader { 9 | 10 | constructor(manager?: LoadingManager); 11 | manager: LoadingManager; 12 | regexp: any; 13 | materials: Material[]; 14 | path: string; 15 | 16 | load(url: string, onLoad: (group: Group) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): void; 17 | parse(data: string) : Group; 18 | setPath(value: string) : void; 19 | setMaterials(materials: MaterialCreator) : void; 20 | _createParserState() : any; 21 | 22 | } 23 | -------------------------------------------------------------------------------- /typescript/three-objloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_objloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show LoadingManager, Material, Group; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | import "three-mtlloader.dart" show MaterialCreator; 8 | 9 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/OBJLoader.js 10 | @JS() 11 | class OBJLoader { 12 | // @Ignore 13 | OBJLoader.fakeConstructor$(); 14 | external factory OBJLoader([LoadingManager manager]); 15 | external LoadingManager get manager; 16 | external set manager(LoadingManager v); 17 | external dynamic get regexp; 18 | external set regexp(dynamic v); 19 | external List get materials; 20 | external set materials(List v); 21 | external String get path; 22 | external set path(String v); 23 | external void load(String url, void onLoad(Group group), 24 | [void onProgress(ProgressEvent event), void onError(ErrorEvent event)]); 25 | external Group parse(String data); 26 | external void setPath(String value); 27 | external void setMaterials(MaterialCreator materials); 28 | external dynamic JS$_createParserState(); 29 | } 30 | -------------------------------------------------------------------------------- /typescript/three-octree.d.ts: -------------------------------------------------------------------------------- 1 | import { Vector3 } from "./three-core"; 2 | 3 | export class Octree { 4 | constructor(parameters?: any); 5 | 6 | update(): void; 7 | 8 | add(object: any, options?: any): any; 9 | 10 | addDeferred(object: any, options?: any): any; 11 | 12 | addObjectData(object: any, part: any): any; 13 | 14 | remove(object: any): any; 15 | 16 | extend(octree: Octree): any; 17 | 18 | rebuild(): any; 19 | 20 | updateObject(object: any): any; 21 | 22 | search(position: Vector3, radius: number, organizeByObject: boolean, direction: Vector3): any; 23 | 24 | setRoot(root: any): any; 25 | 26 | getDepthEnd(): number; 27 | 28 | getNodeCountEnd(): number; 29 | 30 | getObjectCountEnd(): number; 31 | 32 | toConsole(): any; 33 | } -------------------------------------------------------------------------------- /typescript/three-octree.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_octree; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Vector3; 6 | 7 | @JS() 8 | class Octree { 9 | // @Ignore 10 | Octree.fakeConstructor$(); 11 | external factory Octree([dynamic parameters]); 12 | external void update(); 13 | external dynamic add(dynamic object, [dynamic options]); 14 | external dynamic addDeferred(dynamic object, [dynamic options]); 15 | external dynamic addObjectData(dynamic object, dynamic JS$part); 16 | external dynamic remove(dynamic object); 17 | external dynamic extend(Octree octree); 18 | external dynamic rebuild(); 19 | external dynamic updateObject(dynamic object); 20 | external dynamic search( 21 | Vector3 position, num radius, bool organizeByObject, Vector3 direction); 22 | external dynamic setRoot(dynamic root); 23 | external num getDepthEnd(); 24 | external num getNodeCountEnd(); 25 | external num getObjectCountEnd(); 26 | external dynamic toConsole(); 27 | } 28 | -------------------------------------------------------------------------------- /typescript/three-orbitcontrols.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, MOUSE, Object3D, Vector3 } from "./three-core"; 2 | 3 | export class OrbitControls { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | object: Camera; 7 | domElement: HTMLElement | HTMLDocument; 8 | 9 | // API 10 | enabled: boolean; 11 | target: Vector3; 12 | 13 | // deprecated 14 | center: Vector3; 15 | 16 | enableZoom: boolean; 17 | zoomSpeed: number; 18 | minDistance: number; 19 | maxDistance: number; 20 | enableRotate: boolean; 21 | rotateSpeed: number; 22 | enablePan: boolean; 23 | keyPanSpeed: number; 24 | autoRotate: boolean; 25 | autoRotateSpeed: number; 26 | minPolarAngle: number; 27 | maxPolarAngle: number; 28 | minAzimuthAngle: number; 29 | maxAzimuthAngle: number; 30 | enableKeys: boolean; 31 | keys: {LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}; 32 | mouseButtons: {ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}; 33 | enableDamping: boolean; 34 | dampingFactor: number; 35 | 36 | 37 | rotateLeft(angle?: number): void; 38 | 39 | rotateUp(angle?: number): void; 40 | 41 | panLeft(distance?: number): void; 42 | 43 | panUp(distance?: number): void; 44 | 45 | pan(deltaX: number, deltaY: number): void; 46 | 47 | dollyIn(dollyScale: number): void; 48 | 49 | dollyOut(dollyScale: number): void; 50 | 51 | update(): void; 52 | 53 | reset(): void; 54 | 55 | dispose(): void; 56 | 57 | getPolarAngle(): number; 58 | 59 | getAzimuthalAngle(): number; 60 | 61 | // EventDispatcher mixins 62 | addEventListener(type: string, listener: (event: any) => void): void; 63 | 64 | hasEventListener(type: string, listener: (event: any) => void): void; 65 | 66 | removeEventListener(type: string, listener: (event: any) => void): void; 67 | 68 | dispatchEvent(event: {type: string; target: any;}): void; 69 | } 70 | -------------------------------------------------------------------------------- /typescript/three-orbitcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_orbitcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Camera, Vector3; 6 | import "dart:html" show HtmlElement, HtmlDocument; 7 | 8 | @JS() 9 | class OrbitControls { 10 | // @Ignore 11 | OrbitControls.fakeConstructor$(); 12 | external factory OrbitControls(Camera object, [HtmlElement domElement]); 13 | external Camera get object; 14 | external set object(Camera v); 15 | external dynamic /*HtmlElement|HtmlDocument*/ get domElement; 16 | external set domElement(dynamic /*HtmlElement|HtmlDocument*/ v); 17 | 18 | /// API 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external Vector3 get target; 22 | external set target(Vector3 v); 23 | 24 | /// deprecated 25 | external Vector3 get center; 26 | external set center(Vector3 v); 27 | external bool get enableZoom; 28 | external set enableZoom(bool v); 29 | external num get zoomSpeed; 30 | external set zoomSpeed(num v); 31 | external num get minDistance; 32 | external set minDistance(num v); 33 | external num get maxDistance; 34 | external set maxDistance(num v); 35 | external bool get enableRotate; 36 | external set enableRotate(bool v); 37 | external num get rotateSpeed; 38 | external set rotateSpeed(num v); 39 | external bool get enablePan; 40 | external set enablePan(bool v); 41 | external num get keyPanSpeed; 42 | external set keyPanSpeed(num v); 43 | external bool get autoRotate; 44 | external set autoRotate(bool v); 45 | external num get autoRotateSpeed; 46 | external set autoRotateSpeed(num v); 47 | external num get minPolarAngle; 48 | external set minPolarAngle(num v); 49 | external num get maxPolarAngle; 50 | external set maxPolarAngle(num v); 51 | external num get minAzimuthAngle; 52 | external set minAzimuthAngle(num v); 53 | external num get maxAzimuthAngle; 54 | external set maxAzimuthAngle(num v); 55 | external bool get enableKeys; 56 | external set enableKeys(bool v); 57 | external dynamic /*{LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}*/ get keys; 58 | external set keys( 59 | dynamic /*{LEFT: number; UP: number; RIGHT: number; BOTTOM: number;}*/ v); 60 | external dynamic /*{ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}*/ get mouseButtons; 61 | external set mouseButtons( 62 | dynamic /*{ORBIT: MOUSE; ZOOM: MOUSE; PAN: MOUSE;}*/ v); 63 | external bool get enableDamping; 64 | external set enableDamping(bool v); 65 | external num get dampingFactor; 66 | external set dampingFactor(num v); 67 | external void rotateLeft([num angle]); 68 | external void rotateUp([num angle]); 69 | external void panLeft([num distance]); 70 | external void panUp([num distance]); 71 | external void pan(num deltaX, num deltaY); 72 | external void dollyIn(num dollyScale); 73 | external void dollyOut(num dollyScale); 74 | external void update(); 75 | external void reset(); 76 | external void dispose(); 77 | external num getPolarAngle(); 78 | external num getAzimuthalAngle(); 79 | 80 | /// EventDispatcher mixins 81 | external void addEventListener(String type, void listener(dynamic event)); 82 | external void hasEventListener(String type, void listener(dynamic event)); 83 | external void removeEventListener(String type, void listener(dynamic event)); 84 | external void dispatchEvent(dynamic /*{type: string; target: any;}*/ event); 85 | } 86 | -------------------------------------------------------------------------------- /typescript/three-orthographictrackballcontrols.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, EventDispatcher, Vector3 } from "./three-core"; 2 | 3 | export class OrthographicTrackballControls extends EventDispatcher { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | object: Camera; 7 | domElement: HTMLElement; 8 | 9 | // API 10 | enabled: boolean; 11 | screen: {left: number; top: number; width: number; height: number}; 12 | radius: number; 13 | rotateSpeed: number; 14 | zoomSpeed: number; 15 | panSpeed: number; 16 | noRotate: boolean; 17 | noZoom: boolean; 18 | noPan: boolean; 19 | noRoll: boolean; 20 | staticMoving: boolean; 21 | dynamicDampingFactor: number; 22 | keys: number[]; 23 | 24 | target: Vector3; 25 | 26 | position0: Vector3; 27 | target0: Vector3; 28 | up0: Vector3; 29 | 30 | left0: number; 31 | right0: number; 32 | top0: number; 33 | bottom0: number; 34 | 35 | update(): void; 36 | 37 | reset(): void; 38 | 39 | checkDistances(): void; 40 | 41 | zoomCamera(): void; 42 | 43 | panCamera(): void; 44 | 45 | rotateCamera(): void; 46 | 47 | handleResize(): void; 48 | 49 | handleEvent(event: any): void; 50 | } 51 | -------------------------------------------------------------------------------- /typescript/three-orthographictrackballcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_orthographictrackballcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show EventDispatcher, Camera, Vector3; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class OrthographicTrackballControls extends EventDispatcher { 10 | // @Ignore 11 | OrthographicTrackballControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory OrthographicTrackballControls(Camera object, 13 | [HtmlElement domElement]); 14 | external Camera get object; 15 | external set object(Camera v); 16 | external HtmlElement get domElement; 17 | external set domElement(HtmlElement v); 18 | 19 | /// API 20 | external bool get enabled; 21 | external set enabled(bool v); 22 | external dynamic /*{left: number; top: number; width: number; height: number}*/ get screen; 23 | external set screen( 24 | dynamic /*{left: number; top: number; width: number; height: number}*/ v); 25 | external num get radius; 26 | external set radius(num v); 27 | external num get rotateSpeed; 28 | external set rotateSpeed(num v); 29 | external num get zoomSpeed; 30 | external set zoomSpeed(num v); 31 | external num get panSpeed; 32 | external set panSpeed(num v); 33 | external bool get noRotate; 34 | external set noRotate(bool v); 35 | external bool get noZoom; 36 | external set noZoom(bool v); 37 | external bool get noPan; 38 | external set noPan(bool v); 39 | external bool get noRoll; 40 | external set noRoll(bool v); 41 | external bool get staticMoving; 42 | external set staticMoving(bool v); 43 | external num get dynamicDampingFactor; 44 | external set dynamicDampingFactor(num v); 45 | external List get keys; 46 | external set keys(List v); 47 | external Vector3 get target; 48 | external set target(Vector3 v); 49 | external Vector3 get position0; 50 | external set position0(Vector3 v); 51 | external Vector3 get target0; 52 | external set target0(Vector3 v); 53 | external Vector3 get up0; 54 | external set up0(Vector3 v); 55 | external num get left0; 56 | external set left0(num v); 57 | external num get right0; 58 | external set right0(num v); 59 | external num get top0; 60 | external set top0(num v); 61 | external num get bottom0; 62 | external set bottom0(num v); 63 | external void update(); 64 | external void reset(); 65 | external void checkDistances(); 66 | external void zoomCamera(); 67 | external void panCamera(); 68 | external void rotateCamera(); 69 | external void handleResize(); 70 | external void handleEvent(dynamic event); 71 | } 72 | -------------------------------------------------------------------------------- /typescript/three-outlinepass.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Color, Object3D, Scene, Vector2 } from './three-core'; 2 | 3 | export class OutlinePass { 4 | constructor(size: Vector2, scene: Scene, camer: Camera, selectedObjects?: Array); 5 | selectedObjects: Array; 6 | renderCamera: Camera; 7 | visibleEdgeColor: Color; 8 | hiddenEdgeColor: Color; 9 | edgeGlow: number; 10 | usePatternTexture: boolean; 11 | edgeThickness: number; 12 | edgeStrength: number; 13 | downSampleRatio: number; 14 | pulsePeriod: number; 15 | resolution: Vector2; 16 | } 17 | 18 | -------------------------------------------------------------------------------- /typescript/three-outlinepass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_outlinepass; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Vector2, Scene, Camera, Object3D, Color; 6 | 7 | @JS() 8 | class OutlinePass { 9 | // @Ignore 10 | OutlinePass.fakeConstructor$(); 11 | external factory OutlinePass(Vector2 size, Scene scene, Camera camer, 12 | [List selectedObjects]); 13 | external List get selectedObjects; 14 | external set selectedObjects(List v); 15 | external Camera get renderCamera; 16 | external set renderCamera(Camera v); 17 | external Color get visibleEdgeColor; 18 | external set visibleEdgeColor(Color v); 19 | external Color get hiddenEdgeColor; 20 | external set hiddenEdgeColor(Color v); 21 | external num get edgeGlow; 22 | external set edgeGlow(num v); 23 | external bool get usePatternTexture; 24 | external set usePatternTexture(bool v); 25 | external num get edgeThickness; 26 | external set edgeThickness(num v); 27 | external num get edgeStrength; 28 | external set edgeStrength(num v); 29 | external num get downSampleRatio; 30 | external set downSampleRatio(num v); 31 | external num get pulsePeriod; 32 | external set pulsePeriod(num v); 33 | external Vector2 get resolution; 34 | external set resolution(Vector2 v); 35 | } 36 | -------------------------------------------------------------------------------- /typescript/three-projector.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Camera, 3 | Color, 4 | Face3, 5 | Light, 6 | Material, 7 | Object3D, 8 | Scene, 9 | Vector2, 10 | Vector3, 11 | Vector4 12 | } from "./three-core"; 13 | 14 | // Renderers / Renderables ///////////////////////////////////////////////////////////////////// 15 | export class RenderableObject { 16 | constructor(); 17 | 18 | id: number; 19 | object: any; 20 | z: number; 21 | } 22 | 23 | export class RenderableFace { 24 | constructor(); 25 | 26 | id: number; 27 | v1: RenderableVertex; 28 | v2: RenderableVertex; 29 | v3: RenderableVertex; 30 | normalModel: Vector3; 31 | vertexNormalsModel: Vector3[]; 32 | vertexNormalsLength: number; 33 | color: Color; 34 | material: Material; 35 | uvs: Vector2[][]; 36 | z: number; 37 | 38 | } 39 | 40 | export class RenderableVertex { 41 | constructor(); 42 | 43 | position: Vector3; 44 | positionWorld: Vector3; 45 | positionScreen: Vector4; 46 | visible: boolean; 47 | 48 | copy(vertex: RenderableVertex): void; 49 | } 50 | 51 | export class RenderableLine { 52 | constructor(); 53 | 54 | id: number; 55 | v1: RenderableVertex; 56 | v2: RenderableVertex; 57 | vertexColors: Color[]; 58 | material: Material; 59 | z: number; 60 | } 61 | 62 | export class RenderableSprite { 63 | constructor(); 64 | 65 | id: number; 66 | object: any; 67 | x: number; 68 | y: number; 69 | z: number; 70 | rotation: number; 71 | scale: Vector2; 72 | material: Material; 73 | } 74 | 75 | /** 76 | * Projects points between spaces. 77 | */ 78 | export class Projector { 79 | constructor(); 80 | 81 | // deprecated. 82 | projectVector(vector: Vector3, camera: Camera): Vector3; 83 | 84 | // deprecated. 85 | unprojectVector(vector: Vector3, camera: Camera): Vector3; 86 | 87 | /** 88 | * Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. 89 | * If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). 90 | * 91 | * @param scene scene to project. 92 | * @param camera camera to use in the projection. 93 | * @param sort select whether to sort elements using the Painter's algorithm. 94 | */ 95 | projectScene(scene: Scene, camera: Camera, sortObjects: boolean, sortElements?: boolean): { 96 | objects: Object3D[]; // Mesh, Line or other object 97 | sprites: Object3D[]; // Sprite or Particle 98 | lights: Light[]; 99 | elements: Face3[]; // Line, Particle, Face3 or Face4 100 | }; 101 | } 102 | -------------------------------------------------------------------------------- /typescript/three-projector.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_projector; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" 6 | show Vector3, Color, Material, Vector2, Vector4, Camera, Scene; 7 | 8 | /// Renderers / Renderables ///////////////////////////////////////////////////////////////////// 9 | @JS() 10 | class RenderableObject { 11 | // @Ignore 12 | RenderableObject.fakeConstructor$(); 13 | external factory RenderableObject(); 14 | external num get id; 15 | external set id(num v); 16 | external dynamic get object; 17 | external set object(dynamic v); 18 | external num get z; 19 | external set z(num v); 20 | } 21 | 22 | @JS() 23 | class RenderableFace { 24 | // @Ignore 25 | RenderableFace.fakeConstructor$(); 26 | external factory RenderableFace(); 27 | external num get id; 28 | external set id(num v); 29 | external RenderableVertex get v1; 30 | external set v1(RenderableVertex v); 31 | external RenderableVertex get v2; 32 | external set v2(RenderableVertex v); 33 | external RenderableVertex get v3; 34 | external set v3(RenderableVertex v); 35 | external Vector3 get normalModel; 36 | external set normalModel(Vector3 v); 37 | external List get vertexNormalsModel; 38 | external set vertexNormalsModel(List v); 39 | external num get vertexNormalsLength; 40 | external set vertexNormalsLength(num v); 41 | external Color get color; 42 | external set color(Color v); 43 | external Material get material; 44 | external set material(Material v); 45 | external List> get uvs; 46 | external set uvs(List> v); 47 | external num get z; 48 | external set z(num v); 49 | } 50 | 51 | @JS() 52 | class RenderableVertex { 53 | // @Ignore 54 | RenderableVertex.fakeConstructor$(); 55 | external factory RenderableVertex(); 56 | external Vector3 get position; 57 | external set position(Vector3 v); 58 | external Vector3 get positionWorld; 59 | external set positionWorld(Vector3 v); 60 | external Vector4 get positionScreen; 61 | external set positionScreen(Vector4 v); 62 | external bool get visible; 63 | external set visible(bool v); 64 | external void copy(RenderableVertex vertex); 65 | } 66 | 67 | @JS() 68 | class RenderableLine { 69 | // @Ignore 70 | RenderableLine.fakeConstructor$(); 71 | external factory RenderableLine(); 72 | external num get id; 73 | external set id(num v); 74 | external RenderableVertex get v1; 75 | external set v1(RenderableVertex v); 76 | external RenderableVertex get v2; 77 | external set v2(RenderableVertex v); 78 | external List get vertexColors; 79 | external set vertexColors(List v); 80 | external Material get material; 81 | external set material(Material v); 82 | external num get z; 83 | external set z(num v); 84 | } 85 | 86 | @JS() 87 | class RenderableSprite { 88 | // @Ignore 89 | RenderableSprite.fakeConstructor$(); 90 | external factory RenderableSprite(); 91 | external num get id; 92 | external set id(num v); 93 | external dynamic get object; 94 | external set object(dynamic v); 95 | external num get x; 96 | external set x(num v); 97 | external num get y; 98 | external set y(num v); 99 | external num get z; 100 | external set z(num v); 101 | external num get rotation; 102 | external set rotation(num v); 103 | external Vector2 get scale; 104 | external set scale(Vector2 v); 105 | external Material get material; 106 | external set material(Material v); 107 | } 108 | 109 | /// Projects points between spaces. 110 | @JS() 111 | class Projector { 112 | // @Ignore 113 | Projector.fakeConstructor$(); 114 | external factory Projector(); 115 | 116 | /// deprecated. 117 | external Vector3 projectVector(Vector3 vector, Camera camera); 118 | 119 | /// deprecated. 120 | external Vector3 unprojectVector(Vector3 vector, Camera camera); 121 | 122 | /// Transforms a 3D scene object into 2D render data that can be rendered in a screen with your renderer of choice, projecting and clipping things out according to the used camera. 123 | /// If the scene were a real scene, this method would be the equivalent of taking a picture with the camera (and developing the film would be the next step, using a Renderer). 124 | external dynamic 125 | /*{ 126 | objects: Object3D[]; // Mesh, Line or other object 127 | sprites: Object3D[]; // Sprite or Particle 128 | lights: Light[]; 129 | elements: Face3[]; // Line, Particle, Face3 or Face4 130 | }*/ 131 | projectScene(Scene scene, Camera camera, bool sortObjects, [bool sortElements]); 132 | } 133 | -------------------------------------------------------------------------------- /typescript/three-renderpass.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Camera, 3 | Color, 4 | Material, 5 | Scene, 6 | WebGLRenderTarget, 7 | WebGLRenderer 8 | } from "./three-core"; 9 | 10 | export class RenderPass { 11 | constructor(scene: Scene, camera: Camera, overrideMaterial?: Material, clearColor?: Color | string | number, clearAlpha?: number); 12 | 13 | scene: Scene; 14 | camera: Camera; 15 | overrideMaterial: Material; 16 | clearColor: Color | string | number; 17 | clearAlpha: number; 18 | oldClearColor: Color; 19 | oldClearAlpha: number; 20 | enabled: boolean; 21 | clear: boolean; 22 | needsSwap: boolean; 23 | 24 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; 25 | } 26 | -------------------------------------------------------------------------------- /typescript/three-renderpass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_renderpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" 6 | show Scene, Camera, Material, Color, WebGLRenderer, WebGLRenderTarget; 7 | 8 | @JS() 9 | class RenderPass { 10 | // @Ignore 11 | RenderPass.fakeConstructor$(); 12 | external factory RenderPass(Scene scene, Camera camera, 13 | [Material overrideMaterial, 14 | dynamic /*Color|String|num*/ clearColor, 15 | num clearAlpha]); 16 | external Scene get scene; 17 | external set scene(Scene v); 18 | external Camera get camera; 19 | external set camera(Camera v); 20 | external Material get overrideMaterial; 21 | external set overrideMaterial(Material v); 22 | external dynamic /*Color|String|num*/ get clearColor; 23 | external set clearColor(dynamic /*Color|String|num*/ v); 24 | external num get clearAlpha; 25 | external set clearAlpha(num v); 26 | external Color get oldClearColor; 27 | external set oldClearColor(Color v); 28 | external num get oldClearAlpha; 29 | external set oldClearAlpha(num v); 30 | external bool get enabled; 31 | external set enabled(bool v); 32 | external bool get clear; 33 | external set clear(bool v); 34 | external bool get needsSwap; 35 | external set needsSwap(bool v); 36 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 37 | WebGLRenderTarget readBuffer, num delta); 38 | } 39 | -------------------------------------------------------------------------------- /typescript/three-shaderpass.d.ts: -------------------------------------------------------------------------------- 1 | import { 2 | Camera, 3 | Mesh, 4 | Scene, 5 | Shader, 6 | ShaderMaterial, 7 | WebGLRenderTarget, 8 | WebGLRenderer 9 | } from "./three-core"; 10 | 11 | export class ShaderPass { 12 | constructor(shader: Shader, textureID?: string); 13 | 14 | textureID: string; 15 | uniforms: any; 16 | material: ShaderMaterial; 17 | renderToScreen: boolean; 18 | enabled: boolean; 19 | needsSwap: boolean; 20 | clear: boolean; 21 | camera: Camera; 22 | scene: Scene; 23 | quad: Mesh; 24 | 25 | render(renderer: WebGLRenderer, writeBuffer: WebGLRenderTarget, readBuffer: WebGLRenderTarget, delta: number): void; 26 | } -------------------------------------------------------------------------------- /typescript/three-shaderpass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_shaderpass; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" 6 | show 7 | Shader, 8 | ShaderMaterial, 9 | Camera, 10 | Scene, 11 | Mesh, 12 | WebGLRenderer, 13 | WebGLRenderTarget; 14 | 15 | @JS() 16 | class ShaderPass { 17 | // @Ignore 18 | ShaderPass.fakeConstructor$(); 19 | external factory ShaderPass(Shader shader, [String textureID]); 20 | external String get textureID; 21 | external set textureID(String v); 22 | external dynamic get uniforms; 23 | external set uniforms(dynamic v); 24 | external ShaderMaterial get material; 25 | external set material(ShaderMaterial v); 26 | external bool get renderToScreen; 27 | external set renderToScreen(bool v); 28 | external bool get enabled; 29 | external set enabled(bool v); 30 | external bool get needsSwap; 31 | external set needsSwap(bool v); 32 | external bool get clear; 33 | external set clear(bool v); 34 | external Camera get camera; 35 | external set camera(Camera v); 36 | external Scene get scene; 37 | external set scene(Scene v); 38 | external Mesh get quad; 39 | external set quad(Mesh v); 40 | external void render(WebGLRenderer renderer, WebGLRenderTarget writeBuffer, 41 | WebGLRenderTarget readBuffer, num delta); 42 | } 43 | -------------------------------------------------------------------------------- /typescript/three-smaapass.d.ts: -------------------------------------------------------------------------------- 1 | export class SMAAPass { 2 | constructor(width: number, height: number); 3 | renderToScreen: boolean; 4 | } 5 | 6 | -------------------------------------------------------------------------------- /typescript/three-smaapass.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_smaapass; 3 | 4 | import "package:js/js.dart"; 5 | 6 | @JS() 7 | class SMAAPass { 8 | // @Ignore 9 | SMAAPass.fakeConstructor$(); 10 | external factory SMAAPass(num width, num height); 11 | external bool get renderToScreen; 12 | external set renderToScreen(bool v); 13 | } 14 | -------------------------------------------------------------------------------- /typescript/three-tgaloader.d.ts: -------------------------------------------------------------------------------- 1 | // https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/TGALoader.js 2 | 3 | import { LoadingManager, Texture } from "./three-core"; 4 | 5 | export class TGALoader { 6 | constructor(manager?: LoadingManager); 7 | 8 | manager: LoadingManager; 9 | 10 | load(url: string, onLoad?: (texture: Texture) => void, onProgress?: (event: ProgressEvent) => void, onError?: (event: ErrorEvent) => void): Texture; 11 | } 12 | -------------------------------------------------------------------------------- /typescript/three-tgaloader.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_tgaloader; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show LoadingManager, Texture; 6 | import "dart:html" show ProgressEvent, ErrorEvent; 7 | 8 | /// https://github.com/mrdoob/three.js/blob/master/examples/js/loaders/TGALoader.js 9 | @JS() 10 | class TGALoader { 11 | // @Ignore 12 | TGALoader.fakeConstructor$(); 13 | external factory TGALoader([LoadingManager manager]); 14 | external LoadingManager get manager; 15 | external set manager(LoadingManager v); 16 | external Texture load(String url, 17 | [void onLoad(Texture texture), 18 | void onProgress(ProgressEvent event), 19 | void onError(ErrorEvent event)]); 20 | } 21 | -------------------------------------------------------------------------------- /typescript/three-trackballcontrols.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, EventDispatcher, Vector3 } from "./three-core"; 2 | 3 | export class TrackballControls extends EventDispatcher { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | object: Camera; 7 | domElement: HTMLElement; 8 | 9 | // API 10 | enabled: boolean; 11 | screen: {left: number; top: number; width: number; height: number}; 12 | rotateSpeed: number; 13 | zoomSpeed: number; 14 | panSpeed: number; 15 | noRotate: boolean; 16 | noZoom: boolean; 17 | noPan: boolean; 18 | noRoll: boolean; 19 | staticMoving: boolean; 20 | dynamicDampingFactor: number; 21 | minDistance: number; 22 | maxDistance: number; 23 | keys: number[]; 24 | 25 | target: Vector3; 26 | position0: Vector3; 27 | target0: Vector3; 28 | up0: Vector3; 29 | 30 | update(): void; 31 | 32 | reset(): void; 33 | 34 | dispose(): void; 35 | 36 | checkDistances(): void; 37 | 38 | zoomCamera(): void; 39 | 40 | panCamera(): void; 41 | 42 | rotateCamera(): void; 43 | 44 | handleResize(): void; 45 | 46 | handleEvent(event: any): void; 47 | } 48 | -------------------------------------------------------------------------------- /typescript/three-trackballcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_trackballcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show EventDispatcher, Camera, Vector3; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class TrackballControls extends EventDispatcher { 10 | // @Ignore 11 | TrackballControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory TrackballControls(Camera object, [HtmlElement domElement]); 13 | external Camera get object; 14 | external set object(Camera v); 15 | external HtmlElement get domElement; 16 | external set domElement(HtmlElement v); 17 | 18 | /// API 19 | external bool get enabled; 20 | external set enabled(bool v); 21 | external dynamic /*{left: number; top: number; width: number; height: number}*/ get screen; 22 | external set screen( 23 | dynamic /*{left: number; top: number; width: number; height: number}*/ v); 24 | external num get rotateSpeed; 25 | external set rotateSpeed(num v); 26 | external num get zoomSpeed; 27 | external set zoomSpeed(num v); 28 | external num get panSpeed; 29 | external set panSpeed(num v); 30 | external bool get noRotate; 31 | external set noRotate(bool v); 32 | external bool get noZoom; 33 | external set noZoom(bool v); 34 | external bool get noPan; 35 | external set noPan(bool v); 36 | external bool get noRoll; 37 | external set noRoll(bool v); 38 | external bool get staticMoving; 39 | external set staticMoving(bool v); 40 | external num get dynamicDampingFactor; 41 | external set dynamicDampingFactor(num v); 42 | external num get minDistance; 43 | external set minDistance(num v); 44 | external num get maxDistance; 45 | external set maxDistance(num v); 46 | external List get keys; 47 | external set keys(List v); 48 | external Vector3 get target; 49 | external set target(Vector3 v); 50 | external Vector3 get position0; 51 | external set position0(Vector3 v); 52 | external Vector3 get target0; 53 | external set target0(Vector3 v); 54 | external Vector3 get up0; 55 | external set up0(Vector3 v); 56 | external void update(); 57 | external void reset(); 58 | external void dispose(); 59 | external void checkDistances(); 60 | external void zoomCamera(); 61 | external void panCamera(); 62 | external void rotateCamera(); 63 | external void handleResize(); 64 | external void handleEvent(dynamic event); 65 | } 66 | -------------------------------------------------------------------------------- /typescript/three-transformcontrols.d.ts: -------------------------------------------------------------------------------- 1 | import { Camera, Object3D } from "./three-core"; 2 | 3 | export class TransformControls extends Object3D { 4 | constructor(object: Camera, domElement?: HTMLElement); 5 | 6 | size: number; 7 | 8 | space: string; 9 | 10 | object: Object3D; 11 | 12 | update(): void; 13 | 14 | detach(): void; 15 | 16 | attach(object: Object3D): void; 17 | 18 | getMode(): string; 19 | 20 | setMode(mode: string): void; 21 | 22 | setSnap(snap: any): void; 23 | 24 | setSize(size: number): void; 25 | 26 | setSpace(space: string): void; 27 | 28 | setTranslationSnap(size: number): void; 29 | 30 | setRotationSnap(size: number): void; 31 | 32 | } 33 | -------------------------------------------------------------------------------- /typescript/three-transformcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_transformcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Object3D, Camera; 6 | import "dart:html" show HtmlElement; 7 | 8 | @JS() 9 | class TransformControls extends Object3D { 10 | // @Ignore 11 | TransformControls.fakeConstructor$() : super.fakeConstructor$(); 12 | external factory TransformControls(Camera object, [HtmlElement domElement]); 13 | external num get size; 14 | external set size(num v); 15 | external String get space; 16 | external set space(String v); 17 | external Object3D get object; 18 | external set object(Object3D v); 19 | external void update(); 20 | external void detach(); 21 | external void attach(Object3D object); 22 | external String getMode(); 23 | external void setMode(String mode); 24 | external void setSnap(dynamic snap); 25 | external void setSize(num size); 26 | external void setSpace(String space); 27 | external void setTranslationSnap(num size); 28 | external void setRotationSnap(num size); 29 | } 30 | -------------------------------------------------------------------------------- /typescript/three-vrcontrols.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { Camera } from "./three-core"; 4 | 5 | export class VRControls { 6 | constructor(camera: Camera, callback?: (param: string) => void); 7 | 8 | /** 9 | * Update VR Instance Tracking 10 | */ 11 | update(): void; 12 | 13 | zeroSensor(): void; 14 | 15 | scale: number; 16 | 17 | setVRDisplay(display: VRDisplay): void; 18 | } 19 | -------------------------------------------------------------------------------- /typescript/three-vrcontrols.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_vrcontrols; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Camera; 6 | 7 | /// 8 | @JS() 9 | class VRControls { 10 | // @Ignore 11 | VRControls.fakeConstructor$(); 12 | external factory VRControls(Camera camera, [void callback(String param)]); 13 | 14 | /// Update VR Instance Tracking 15 | external void update(); 16 | external void zeroSensor(); 17 | external num get scale; 18 | external set scale(num v); 19 | external void setVRDisplay(VRDisplay display); 20 | } 21 | -------------------------------------------------------------------------------- /typescript/three-vreffect.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | 3 | import { Camera, Matrix4, Renderer, Scene } from "./three-core"; 4 | 5 | export class VREffect { 6 | constructor(renderer: Renderer, callback?: (params: string) => void); 7 | 8 | render(scene: Scene, camera: Camera): void; 9 | 10 | setSize(width: number, height: number): void; 11 | 12 | setFullScreen(flag: boolean): void; 13 | 14 | startFullscreen(): void; 15 | 16 | FovToNDCScaleOffset(fov: VRFov): VREffectOffset; 17 | 18 | FovPortToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; 19 | 20 | FovToProjection(fov: VRFov, rightHanded: boolean, zNear: number, zFar: number): Matrix4; 21 | 22 | setVRDisplay(display: VRDisplay): void; 23 | } 24 | 25 | export interface VRFov { 26 | leftTan: number; 27 | rightTan: number; 28 | upTan: number; 29 | downTan: number; 30 | } 31 | 32 | export interface VREffectOffset { 33 | scale: number; 34 | offset: number; 35 | } -------------------------------------------------------------------------------- /typescript/three-vreffect.dart: -------------------------------------------------------------------------------- 1 | @JS() 2 | library typescript.three_vreffect; 3 | 4 | import "package:js/js.dart"; 5 | import "three-core.dart" show Renderer, Scene, Camera, Matrix4; 6 | 7 | /// 8 | @JS() 9 | class VREffect { 10 | // @Ignore 11 | VREffect.fakeConstructor$(); 12 | external factory VREffect(Renderer renderer, [void callback(String params)]); 13 | external void render(Scene scene, Camera camera); 14 | external void setSize(num width, num height); 15 | external void setFullScreen(bool flag); 16 | external void startFullscreen(); 17 | external VREffectOffset FovToNDCScaleOffset(VRFov fov); 18 | external Matrix4 FovPortToProjection( 19 | VRFov fov, bool rightHanded, num zNear, num zFar); 20 | external Matrix4 FovToProjection( 21 | VRFov fov, bool rightHanded, num zNear, num zFar); 22 | external void setVRDisplay(VRDisplay display); 23 | } 24 | 25 | @anonymous 26 | @JS() 27 | abstract class VRFov { 28 | external num get leftTan; 29 | external set leftTan(num v); 30 | external num get rightTan; 31 | external set rightTan(num v); 32 | external num get upTan; 33 | external set upTan(num v); 34 | external num get downTan; 35 | external set downTan(num v); 36 | external factory VRFov({num leftTan, num rightTan, num upTan, num downTan}); 37 | } 38 | 39 | @anonymous 40 | @JS() 41 | abstract class VREffectOffset { 42 | external num get scale; 43 | external set scale(num v); 44 | external num get offset; 45 | external set offset(num v); 46 | external factory VREffectOffset({num scale, num offset}); 47 | } 48 | --------------------------------------------------------------------------------