Skip to content

Add node.js support #20924

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
9456457
Add .node files
Dec 5, 2020
fa94ca0
Add node bundle in rollup config
Dec 5, 2020
6d8e8ba
Change modularize
Dec 5, 2020
35d7ab4
Run modularize
Dec 5, 2020
9a260d9
Add dependency for file Loader node.
Dec 5, 2020
9c987a4
Complete FileLoader
Dec 5, 2020
d8335c0
Test and fix ImageLoader
Dec 5, 2020
1bb7999
Add node polyfill
Dec 5, 2020
eeba038
Add LoaderUtils.node
Dec 8, 2020
b34eca8
Change rollup
Dec 21, 2020
7433ce9
Add dom-globals
Dec 21, 2020
07569e0
Create dom-global-node
Dec 21, 2020
0f6c977
Export dom global node from three
Dec 21, 2020
6786875
Remove three node
Dec 21, 2020
8acb1fa
Remove dependency to xmlhttprequest
Dec 21, 2020
69ca4af
Import current stuff from dom-global
Dec 21, 2020
271a810
Add and fill CustomEvent
Dec 21, 2020
a14b64c
Refactor modularize
Dec 21, 2020
8beea50
Remove old modularize result
Dec 21, 2020
7285ce7
Add a nominal node version for each file
Dec 21, 2020
c13fc06
Run modularize
Dec 21, 2020
9135ba9
Refactor config using alias
Dec 21, 2020
cfe8cfb
Fix typo for build
Dec 21, 2020
b4abac9
Add missing export
Dec 21, 2020
760a08c
Add config to rollup node version
Dec 21, 2020
6dd77b1
Add script to test node version
Dec 21, 2020
f591611
Add three source for node version
Dec 21, 2020
85d5f01
Add script at root
Dec 21, 2020
2628627
Remove examples for now (too much stuff in PR)
Dec 21, 2020
613d60c
Restore "module"
Dec 21, 2020
0de1151
Add tests for FileLoader
Dec 22, 2020
0cd4864
Bundle all file as node by default
Dec 22, 2020
e7896ad
Fix typo
Dec 22, 2020
2ad7c42
Fix typo
Dec 22, 2020
c786ce4
Refactor dom-globals to avoid test crashs
Dec 22, 2020
41cf8a9
Format
Dec 22, 2020
fe50ca3
Don't forget to catch
Dec 22, 2020
e88e649
Add test cases with file and https protocols
Dec 22, 2020
2723eaf
Make local data test work
Dec 22, 2020
6631d56
Add tests for ImageLoader
Dec 22, 2020
eb52772
Add a final test for ImageLoader
Dec 22, 2020
47ae008
Temp remove .node stuff
Dec 22, 2020
0a94921
Temp remove again
Dec 22, 2020
27bee83
Add canvas as dependency to load img
Dec 22, 2020
7520874
Replace dom globals in examples
Dec 22, 2020
bdf99bb
Replace instances of window. in src
Dec 22, 2020
5d2dc55
Fix double declaration
Dec 22, 2020
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions examples/js/WebGL.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,8 @@ THREE.WEBGL = {

try {

var canvas = document.createElement( 'canvas' );
return !! ( window.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );
var canvas = THREE.document.createElement( 'canvas' );
return !! ( THREE.WebGLRenderingContext && ( canvas.getContext( 'webgl' ) || canvas.getContext( 'experimental-webgl' ) ) );

} catch ( e ) {

Expand All @@ -19,8 +19,8 @@ THREE.WEBGL = {

try {

var canvas = document.createElement( 'canvas' );
return !! ( window.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );
var canvas = THREE.document.createElement( 'canvas' );
return !! ( THREE.WebGL2RenderingContext && canvas.getContext( 'webgl2' ) );

} catch ( e ) {

Expand Down Expand Up @@ -50,13 +50,13 @@ THREE.WEBGL = {
};

var contexts = {
1: window.WebGLRenderingContext,
2: window.WebGL2RenderingContext
1: THREE.WebGLRenderingContext,
2: THREE.WebGL2RenderingContext
};

var message = 'Your $0 does not seem to support <a href="http://khronos.org/webgl/wiki/Getting_a_WebGL_Implementation" style="color:#000">$1</a>';

var element = document.createElement( 'div' );
var element = THREE.document.createElement( 'div' );
element.id = 'webglmessage';
element.style.fontFamily = 'monospace';
element.style.fontSize = '13px';
Expand Down
12 changes: 6 additions & 6 deletions examples/js/cameras/CinematicCamera.js
Original file line number Diff line number Diff line change
Expand Up @@ -113,13 +113,13 @@ THREE.CinematicCamera.prototype.initPostProcessing = function () {

this.postprocessing.scene = new THREE.Scene();

this.postprocessing.camera = new THREE.OrthographicCamera( window.innerWidth / - 2, window.innerWidth / 2, window.innerHeight / 2, window.innerHeight / - 2, - 10000, 10000 );
this.postprocessing.camera = new THREE.OrthographicCamera( THREE.innerWidth / - 2, THREE.innerWidth / 2, THREE.innerHeight / 2, THREE.innerHeight / - 2, - 10000, 10000 );

this.postprocessing.scene.add( this.postprocessing.camera );

var pars = { minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter, format: THREE.RGBFormat };
this.postprocessing.rtTextureDepth = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
this.postprocessing.rtTextureColor = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, pars );
this.postprocessing.rtTextureDepth = new THREE.WebGLRenderTarget( THREE.innerWidth, THREE.innerHeight, pars );
this.postprocessing.rtTextureColor = new THREE.WebGLRenderTarget( THREE.innerWidth, THREE.innerHeight, pars );

var bokeh_shader = THREE.BokehShader;

Expand All @@ -143,9 +143,9 @@ THREE.CinematicCamera.prototype.initPostProcessing = function () {
this.postprocessing.bokeh_uniforms[ "zfar" ].value = this.near;


this.postprocessing.bokeh_uniforms[ "textureWidth" ].value = window.innerWidth;
this.postprocessing.bokeh_uniforms[ "textureWidth" ].value = THREE.innerWidth;

this.postprocessing.bokeh_uniforms[ "textureHeight" ].value = window.innerHeight;
this.postprocessing.bokeh_uniforms[ "textureHeight" ].value = THREE.innerHeight;

this.postprocessing.materialBokeh = new THREE.ShaderMaterial( {
uniforms: this.postprocessing.bokeh_uniforms,
Expand All @@ -158,7 +158,7 @@ THREE.CinematicCamera.prototype.initPostProcessing = function () {
}
} );

this.postprocessing.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( window.innerWidth, window.innerHeight ), this.postprocessing.materialBokeh );
this.postprocessing.quad = new THREE.Mesh( new THREE.PlaneBufferGeometry( THREE.innerWidth, THREE.innerHeight ), this.postprocessing.materialBokeh );
this.postprocessing.quad.position.z = - 500;
this.postprocessing.scene.add( this.postprocessing.quad );

Expand Down
18 changes: 9 additions & 9 deletions examples/js/controls/DeviceOrientationControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ THREE.DeviceOrientationControls = function ( object ) {

var onScreenOrientationChangeEvent = function () {

scope.screenOrientation = window.orientation || 0;
scope.screenOrientation = THREE.orientation || 0;

};

Expand Down Expand Up @@ -62,14 +62,14 @@ THREE.DeviceOrientationControls = function ( object ) {

// iOS 13+

if ( window.DeviceOrientationEvent !== undefined && typeof window.DeviceOrientationEvent.requestPermission === 'function' ) {
if ( THREE.DeviceOrientationEvent !== undefined && typeof THREE.DeviceOrientationEvent.requestPermission === 'function' ) {

window.DeviceOrientationEvent.requestPermission().then( function ( response ) {
THREE.DeviceOrientationEvent.requestPermission().then( function ( response ) {

if ( response == 'granted' ) {

window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );
THREE.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
THREE.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );

}

Expand All @@ -81,8 +81,8 @@ THREE.DeviceOrientationControls = function ( object ) {

} else {

window.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
window.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );
THREE.addEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
THREE.addEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );

}

Expand All @@ -92,8 +92,8 @@ THREE.DeviceOrientationControls = function ( object ) {

this.disconnect = function () {

window.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
window.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );
THREE.removeEventListener( 'orientationchange', onScreenOrientationChangeEvent, false );
THREE.removeEventListener( 'deviceorientation', onDeviceOrientationChangeEvent, false );

scope.enabled = false;

Expand Down
22 changes: 11 additions & 11 deletions examples/js/controls/FirstPersonControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ THREE.FirstPersonControls = function ( object, domElement ) {
if ( domElement === undefined ) {

console.warn( 'THREE.FirstPersonControls: The second parameter "domElement" is now mandatory.' );
domElement = document;
domElement = THREE.document;

}

Expand Down Expand Up @@ -59,7 +59,7 @@ THREE.FirstPersonControls = function ( object, domElement ) {

//

if ( this.domElement !== document ) {
if ( this.domElement !== THREE.document ) {

this.domElement.setAttribute( 'tabindex', - 1 );

Expand All @@ -69,10 +69,10 @@ THREE.FirstPersonControls = function ( object, domElement ) {

this.handleResize = function () {

if ( this.domElement === document ) {
if ( this.domElement === THREE.document ) {

this.viewHalfX = window.innerWidth / 2;
this.viewHalfY = window.innerHeight / 2;
this.viewHalfX = THREE.innerWidth / 2;
this.viewHalfY = THREE.innerHeight / 2;

} else {

Expand All @@ -85,7 +85,7 @@ THREE.FirstPersonControls = function ( object, domElement ) {

this.onMouseDown = function ( event ) {

if ( this.domElement !== document ) {
if ( this.domElement !== THREE.document ) {

this.domElement.focus();

Expand Down Expand Up @@ -131,7 +131,7 @@ THREE.FirstPersonControls = function ( object, domElement ) {

this.onMouseMove = function ( event ) {

if ( this.domElement === document ) {
if ( this.domElement === THREE.document ) {

this.mouseX = event.pageX - this.viewHalfX;
this.mouseY = event.pageY - this.viewHalfY;
Expand Down Expand Up @@ -298,8 +298,8 @@ THREE.FirstPersonControls = function ( object, domElement ) {
this.domElement.removeEventListener( 'mousemove', _onMouseMove, false );
this.domElement.removeEventListener( 'mouseup', _onMouseUp, false );

window.removeEventListener( 'keydown', _onKeyDown, false );
window.removeEventListener( 'keyup', _onKeyUp, false );
THREE.removeEventListener( 'keydown', _onKeyDown, false );
THREE.removeEventListener( 'keyup', _onKeyUp, false );

};

Expand All @@ -314,8 +314,8 @@ THREE.FirstPersonControls = function ( object, domElement ) {
this.domElement.addEventListener( 'mousedown', _onMouseDown, false );
this.domElement.addEventListener( 'mouseup', _onMouseUp, false );

window.addEventListener( 'keydown', _onKeyDown, false );
window.addEventListener( 'keyup', _onKeyUp, false );
THREE.addEventListener( 'keydown', _onKeyDown, false );
THREE.addEventListener( 'keyup', _onKeyUp, false );

function bind( scope, fn ) {

Expand Down
16 changes: 8 additions & 8 deletions examples/js/controls/FlyControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ THREE.FlyControls = function ( object, domElement ) {
if ( domElement === undefined ) {

console.warn( 'THREE.FlyControls: The second parameter "domElement" is now mandatory.' );
domElement = document;
domElement = THREE.document;

}

Expand Down Expand Up @@ -108,7 +108,7 @@ THREE.FlyControls = function ( object, domElement ) {

this.mousedown = function ( event ) {

if ( this.domElement !== document ) {
if ( this.domElement !== THREE.document ) {

this.domElement.focus();

Expand Down Expand Up @@ -237,7 +237,7 @@ THREE.FlyControls = function ( object, domElement ) {

this.getContainerDimensions = function () {

if ( this.domElement != document ) {
if ( this.domElement != THREE.document ) {

return {
size: [ this.domElement.offsetWidth, this.domElement.offsetHeight ],
Expand All @@ -247,7 +247,7 @@ THREE.FlyControls = function ( object, domElement ) {
} else {

return {
size: [ window.innerWidth, window.innerHeight ],
size: [ THREE.innerWidth, THREE.innerHeight ],
offset: [ 0, 0 ]
};

Expand Down Expand Up @@ -278,8 +278,8 @@ THREE.FlyControls = function ( object, domElement ) {
this.domElement.removeEventListener( 'mousemove', _mousemove, false );
this.domElement.removeEventListener( 'mouseup', _mouseup, false );

window.removeEventListener( 'keydown', _keydown, false );
window.removeEventListener( 'keyup', _keyup, false );
THREE.removeEventListener( 'keydown', _keydown, false );
THREE.removeEventListener( 'keyup', _keyup, false );

};

Expand All @@ -295,8 +295,8 @@ THREE.FlyControls = function ( object, domElement ) {
this.domElement.addEventListener( 'mousedown', _mousedown, false );
this.domElement.addEventListener( 'mouseup', _mouseup, false );

window.addEventListener( 'keydown', _keydown, false );
window.addEventListener( 'keyup', _keyup, false );
THREE.addEventListener( 'keydown', _keydown, false );
THREE.addEventListener( 'keyup', _keyup, false );

this.updateMovementVector();
this.updateRotationVector();
Expand Down
4 changes: 2 additions & 2 deletions examples/js/controls/OrbitControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
THREE.OrbitControls = function ( object, domElement ) {

if ( domElement === undefined ) console.warn( 'THREE.OrbitControls: The second parameter "domElement" is now mandatory.' );
if ( domElement === document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
if ( domElement === THREE.document ) console.error( 'THREE.OrbitControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );

this.object = object;
this.domElement = domElement;
Expand Down Expand Up @@ -821,7 +821,7 @@ THREE.OrbitControls = function ( object, domElement ) {
// Manually set the focus since calling preventDefault above
// prevents the browser from setting it automatically.

scope.domElement.focus ? scope.domElement.focus() : window.focus();
scope.domElement.focus ? scope.domElement.focus() : THREE.focus();

var mouseAction;

Expand Down
2 changes: 1 addition & 1 deletion examples/js/controls/PointerLockControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ THREE.PointerLockControls = function ( camera, domElement ) {
if ( domElement === undefined ) {

console.warn( 'THREE.PointerLockControls: The second parameter "domElement" is now mandatory.' );
domElement = document.body;
domElement = THREE.document.body;

}

Expand Down
18 changes: 9 additions & 9 deletions examples/js/controls/TrackballControls.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
THREE.TrackballControls = function ( object, domElement ) {

if ( domElement === undefined ) console.warn( 'THREE.TrackballControls: The second parameter "domElement" is now mandatory.' );
if ( domElement === document ) console.error( 'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );
if ( domElement === THREE.document ) console.error( 'THREE.TrackballControls: "document" should not be used as the target "domElement". Please use "renderer.domElement" instead.' );

var scope = this;
var STATE = { NONE: - 1, ROTATE: 0, ZOOM: 1, PAN: 2, TOUCH_ROTATE: 3, TOUCH_ZOOM_PAN: 4 };
Expand Down Expand Up @@ -83,8 +83,8 @@ THREE.TrackballControls = function ( object, domElement ) {
var box = scope.domElement.getBoundingClientRect();
// adjustments come from similar code in the jquery offset() function
var d = scope.domElement.ownerDocument.documentElement;
scope.screen.left = box.left + window.pageXOffset - d.clientLeft;
scope.screen.top = box.top + window.pageYOffset - d.clientTop;
scope.screen.left = box.left + THREE.pageXOffset - d.clientLeft;
scope.screen.top = box.top + THREE.pageYOffset - d.clientTop;
scope.screen.width = box.width;
scope.screen.height = box.height;

Expand Down Expand Up @@ -448,7 +448,7 @@ THREE.TrackballControls = function ( object, domElement ) {

if ( scope.enabled === false ) return;

window.removeEventListener( 'keydown', keydown );
THREE.removeEventListener( 'keydown', keydown );

if ( _keyState !== STATE.NONE ) {

Expand Down Expand Up @@ -476,7 +476,7 @@ THREE.TrackballControls = function ( object, domElement ) {

_keyState = STATE.NONE;

window.addEventListener( 'keydown', keydown, false );
THREE.addEventListener( 'keydown', keydown, false );

}

Expand Down Expand Up @@ -713,8 +713,8 @@ THREE.TrackballControls = function ( object, domElement ) {
scope.domElement.ownerDocument.removeEventListener( 'pointermove', onPointerMove, false );
scope.domElement.ownerDocument.removeEventListener( 'pointerup', onPointerUp, false );

window.removeEventListener( 'keydown', keydown, false );
window.removeEventListener( 'keyup', keyup, false );
THREE.removeEventListener( 'keydown', keydown, false );
THREE.removeEventListener( 'keyup', keyup, false );

};

Expand All @@ -730,8 +730,8 @@ THREE.TrackballControls = function ( object, domElement ) {
this.domElement.ownerDocument.addEventListener( 'pointermove', onPointerMove, false );
this.domElement.ownerDocument.addEventListener( 'pointerup', onPointerUp, false );

window.addEventListener( 'keydown', keydown, false );
window.addEventListener( 'keyup', keyup, false );
THREE.addEventListener( 'keydown', keydown, false );
THREE.addEventListener( 'keyup', keyup, false );

this.handleResize();

Expand Down
2 changes: 1 addition & 1 deletion examples/js/controls/TransformControls.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ THREE.TransformControls = function ( camera, domElement ) {
if ( domElement === undefined ) {

console.warn( 'THREE.TransformControls: The second parameter "domElement" is now mandatory.' );
domElement = document;
domElement = THREE.document;

}

Expand Down
6 changes: 3 additions & 3 deletions examples/js/effects/AsciiEffect.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,10 +30,10 @@ THREE.AsciiEffect = function ( renderer, charSet, options ) {

var width, height;

var domElement = document.createElement( 'div' );
var domElement = THREE.document.createElement( 'div' );
domElement.style.cursor = 'default';

var oAscii = document.createElement( "table" );
var oAscii = THREE.document.createElement( "table" );
domElement.appendChild( oAscii );

var iWidth, iHeight;
Expand Down Expand Up @@ -115,7 +115,7 @@ THREE.AsciiEffect = function ( renderer, charSet, options ) {

var oCanvasImg = renderer.domElement;

var oCanvas = document.createElement( "canvas" );
var oCanvas = THREE.document.createElement( "canvas" );
if ( ! oCanvas.getContext ) {

return;
Expand Down
4 changes: 2 additions & 2 deletions examples/js/exporters/ColladaExporter.js
Original file line number Diff line number Diff line change
Expand Up @@ -80,7 +80,7 @@ THREE.ColladaExporter.prototype = {
// Convert an image into a png format for saving
function base64ToBuffer( str ) {

var b = atob( str );
var b = THREE.atob( str );
var buf = new Uint8Array( b.length );

for ( var i = 0, l = buf.length; i < l; i ++ ) {
Expand All @@ -96,7 +96,7 @@ THREE.ColladaExporter.prototype = {
var canvas, ctx;
function imageToData( image, ext ) {

canvas = canvas || document.createElement( 'canvas' );
canvas = canvas || THREE.document.createElement( 'canvas' );
ctx = ctx || canvas.getContext( '2d' );

canvas.width = image.width;
Expand Down
Loading