Browse Source

HemisphereLightProbe: Convert to ES6 class

Mr.doob 4 years ago
parent
commit
39104f3a3b
1 changed files with 14 additions and 34 deletions
  1. 14 34
      src/lights/HemisphereLightProbe.js

+ 14 - 34
src/lights/HemisphereLightProbe.js

@@ -2,49 +2,29 @@ import { Color } from '../math/Color.js';
 import { Vector3 } from '../math/Vector3.js';
 import { LightProbe } from './LightProbe.js';
 
-function HemisphereLightProbe( skyColor, groundColor, intensity ) {
+class HemisphereLightProbe extends LightProbe {
 
-	LightProbe.call( this, undefined, intensity );
+	constructor( skyColor, groundColor, intensity = 1 ) {
 
-	const color1 = new Color().set( skyColor );
-	const color2 = new Color().set( groundColor );
+		super( undefined, intensity );
 
-	const sky = new Vector3( color1.r, color1.g, color1.b );
-	const ground = new Vector3( color2.r, color2.g, color2.b );
+		Object.defineProperty( this, 'isHemisphereLightProbe', { value: true } );
 
-	// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );
-	const c0 = Math.sqrt( Math.PI );
-	const c1 = c0 * Math.sqrt( 0.75 );
+		const color1 = new Color().set( skyColor );
+		const color2 = new Color().set( groundColor );
 
-	this.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );
-	this.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );
+		const sky = new Vector3( color1.r, color1.g, color1.b );
+		const ground = new Vector3( color2.r, color2.g, color2.b );
 
-}
-
-HemisphereLightProbe.prototype = Object.assign( Object.create( LightProbe.prototype ), {
-
-	constructor: HemisphereLightProbe,
-
-	isHemisphereLightProbe: true,
-
-	copy: function ( source ) { // modifying colors not currently supported
-
-		LightProbe.prototype.copy.call( this, source );
+		// without extra factor of PI in the shader, should = 1 / Math.sqrt( Math.PI );
+		const c0 = Math.sqrt( Math.PI );
+		const c1 = c0 * Math.sqrt( 0.75 );
 
-		return this;
-
-	},
-
-	toJSON: function ( meta ) {
-
-		const data = LightProbe.prototype.toJSON.call( this, meta );
-
-		// data.sh = this.sh.toArray(); // todo
-
-		return data;
+		this.sh.coefficients[ 0 ].copy( sky ).add( ground ).multiplyScalar( c0 );
+		this.sh.coefficients[ 1 ].copy( sky ).sub( ground ).multiplyScalar( c1 );
 
 	}
 
-} );
+}
 
 export { HemisphereLightProbe };