소스 검색

MathUtils: Refactored generateUUID() code.

Mr.doob 3 년 전
부모
커밋
e245401ff3
1개의 변경된 파일21개의 추가작업 그리고 25개의 파일을 삭제
  1. 21 25
      src/math/MathUtils.js

+ 21 - 25
src/math/MathUtils.js

@@ -3,44 +3,40 @@ let _seed = 1234567;
 const DEG2RAD = Math.PI / 180;
 const DEG2RAD = Math.PI / 180;
 const RAD2DEG = 180 / Math.PI;
 const RAD2DEG = 180 / Math.PI;
 
 
-let generateUUID;
+//
 
 
-if ( typeof crypto !== 'undefined' && 'randomUUID' in crypto ) {
+const _lut = [];
 
 
-	generateUUID = function generateUUID() {
+for ( let i = 0; i < 256; i ++ ) {
 
 
-		return crypto.randomUUID().toUpperCase();
-
-	};
+	_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );
 
 
-} else {
+}
 
 
-	// TODO Remove this code when crypto.randomUUID() is available everywhere
+const hasRandomUUID = typeof crypto !== 'undefined' && 'randomUUID' in crypto;
 
 
-	const _lut = [];
+function generateUUID() {
 
 
-	for ( let i = 0; i < 256; i ++ ) {
+	if ( hasRandomUUID ) {
 
 
-		_lut[ i ] = ( i < 16 ? '0' : '' ) + ( i ).toString( 16 );
+		return crypto.randomUUID().toUpperCase();
 
 
 	}
 	}
 
 
+	// TODO Remove this code when crypto.randomUUID() is available everywhere
 	// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
 	// http://stackoverflow.com/questions/105034/how-to-create-a-guid-uuid-in-javascript/21963136#21963136
-	generateUUID = function generateUUID() {
-
-		const d0 = Math.random() * 0xffffffff | 0;
-		const d1 = Math.random() * 0xffffffff | 0;
-		const d2 = Math.random() * 0xffffffff | 0;
-		const d3 = Math.random() * 0xffffffff | 0;
-		const uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +
-				_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +
-				_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +
-				_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];
-
-		// .toUpperCase() here flattens concatenated strings to save heap memory space.
-		return uuid.toUpperCase();
 
 
-	};
+	const d0 = Math.random() * 0xffffffff | 0;
+	const d1 = Math.random() * 0xffffffff | 0;
+	const d2 = Math.random() * 0xffffffff | 0;
+	const d3 = Math.random() * 0xffffffff | 0;
+	const uuid = _lut[ d0 & 0xff ] + _lut[ d0 >> 8 & 0xff ] + _lut[ d0 >> 16 & 0xff ] + _lut[ d0 >> 24 & 0xff ] + '-' +
+			_lut[ d1 & 0xff ] + _lut[ d1 >> 8 & 0xff ] + '-' + _lut[ d1 >> 16 & 0x0f | 0x40 ] + _lut[ d1 >> 24 & 0xff ] + '-' +
+			_lut[ d2 & 0x3f | 0x80 ] + _lut[ d2 >> 8 & 0xff ] + '-' + _lut[ d2 >> 16 & 0xff ] + _lut[ d2 >> 24 & 0xff ] +
+			_lut[ d3 & 0xff ] + _lut[ d3 >> 8 & 0xff ] + _lut[ d3 >> 16 & 0xff ] + _lut[ d3 >> 24 & 0xff ];
+
+	// .toUpperCase() here flattens concatenated strings to save heap memory space.
+	return uuid.toUpperCase();
 
 
 }
 }