浏览代码

Merge pull request #16936 from Mugen87/dev36

VRMLLoader: Fix parsing in Safari.
Michael Herzog 6 年之前
父节点
当前提交
be18285451
共有 2 个文件被更改,包括 60 次插入16 次删除
  1. 30 8
      examples/js/loaders/VRMLLoader.js
  2. 30 8
      examples/jsm/loaders/VRMLLoader.js

+ 30 - 8
examples/js/loaders/VRMLLoader.js

@@ -170,7 +170,8 @@ THREE.VRMLLoader = ( function () {
 
 
 				var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
 				var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
 				var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
 				var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
-				var BooleanLiteral = createToken( { name: 'BooleanLiteral', pattern: /TRUE|FALSE/ } );
+				var TrueLiteral = createToken( { name: 'TrueLiteral', pattern: /TRUE/ } );
+				var FalseLiteral = createToken( { name: 'FalseLiteral', pattern: /FALSE/ } );
 				var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
 				var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
 				var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
 				var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
 				var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
 				var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
@@ -198,7 +199,8 @@ THREE.VRMLLoader = ( function () {
 					USE,
 					USE,
 					ROUTE,
 					ROUTE,
 					TO,
 					TO,
-					BooleanLiteral,
+					TrueLiteral,
+					FalseLiteral,
 					NullLiteral,
 					NullLiteral,
 					// the Identifier must appear after the keywords because all keywords are valid identifiers
 					// the Identifier must appear after the keywords because all keywords are valid identifiers
 					Version,
 					Version,
@@ -446,15 +448,29 @@ THREE.VRMLLoader = ( function () {
 
 
 					}
 					}
 
 
-					if ( ctx.BooleanLiteral ) {
+					if ( ctx.TrueLiteral ) {
 
 
 						field.type = 'boolean';
 						field.type = 'boolean';
 
 
-						for ( var i = 0, l = ctx.BooleanLiteral.length; i < l; i ++ ) {
+						for ( var i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {
 
 
-							var booleanLiteral = ctx.BooleanLiteral[ i ];
+							var trueLiteral = ctx.TrueLiteral[ i ];
 
 
-							field.values.push( booleanLiteral.image === 'TRUE' );
+							if ( trueLiteral.image === 'TRUE' ) field.values.push( true );
+
+						}
+
+					}
+
+					if ( ctx.FalseLiteral ) {
+
+						field.type = 'boolean';
+
+						for ( var i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {
+
+							var falseLiteral = ctx.FalseLiteral[ i ];
+
+							if ( falseLiteral.image === 'FALSE' ) field.values.push( false );
 
 
 						}
 						}
 
 
@@ -2374,7 +2390,8 @@ THREE.VRMLLoader = ( function () {
 		var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
 		var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
 		var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
 		var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
 		var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
 		var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
-		var BooleanLiteral = tokenVocabulary[ 'BooleanLiteral' ];
+		var TrueLiteral = tokenVocabulary[ 'TrueLiteral' ];
+		var FalseLiteral = tokenVocabulary[ 'FalseLiteral' ];
 		var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
 		var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
 		var DEF = tokenVocabulary[ 'DEF' ];
 		var DEF = tokenVocabulary[ 'DEF' ];
 		var USE = tokenVocabulary[ 'USE' ];
 		var USE = tokenVocabulary[ 'USE' ];
@@ -2483,7 +2500,12 @@ THREE.VRMLLoader = ( function () {
 					} },
 					} },
 					{ ALT: function () {
 					{ ALT: function () {
 
 
-						$.CONSUME( BooleanLiteral );
+						$.CONSUME( TrueLiteral );
+
+					} },
+					{ ALT: function () {
+
+						$.CONSUME( FalseLiteral );
 
 
 					} },
 					} },
 					{ ALT: function () {
 					{ ALT: function () {

+ 30 - 8
examples/jsm/loaders/VRMLLoader.js

@@ -204,7 +204,8 @@ var VRMLLoader = ( function () {
 
 
 				var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
 				var StringLiteral = createToken( { name: "StringLiteral", pattern: /"(:?[^\\"\n\r]+|\\(:?[bfnrtv"\\/]|u[0-9a-fA-F]{4}))*"/ } );
 				var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
 				var NumberLiteral = createToken( { name: 'NumberLiteral', pattern: /[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?/ } );
-				var BooleanLiteral = createToken( { name: 'BooleanLiteral', pattern: /TRUE|FALSE/ } );
+				var TrueLiteral = createToken( { name: 'TrueLiteral', pattern: /TRUE/ } );
+				var FalseLiteral = createToken( { name: 'FalseLiteral', pattern: /FALSE/ } );
 				var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
 				var NullLiteral = createToken( { name: 'NullLiteral', pattern: /NULL/ } );
 				var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
 				var LSquare = createToken( { name: 'LSquare', pattern: /\[/ } );
 				var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
 				var RSquare = createToken( { name: 'RSquare', pattern: /]/ } );
@@ -232,7 +233,8 @@ var VRMLLoader = ( function () {
 					USE,
 					USE,
 					ROUTE,
 					ROUTE,
 					TO,
 					TO,
-					BooleanLiteral,
+					TrueLiteral,
+					FalseLiteral,
 					NullLiteral,
 					NullLiteral,
 					// the Identifier must appear after the keywords because all keywords are valid identifiers
 					// the Identifier must appear after the keywords because all keywords are valid identifiers
 					Version,
 					Version,
@@ -480,15 +482,29 @@ var VRMLLoader = ( function () {
 
 
 					}
 					}
 
 
-					if ( ctx.BooleanLiteral ) {
+					if ( ctx.TrueLiteral ) {
 
 
 						field.type = 'boolean';
 						field.type = 'boolean';
 
 
-						for ( var i = 0, l = ctx.BooleanLiteral.length; i < l; i ++ ) {
+						for ( var i = 0, l = ctx.TrueLiteral.length; i < l; i ++ ) {
 
 
-							var booleanLiteral = ctx.BooleanLiteral[ i ];
+							var trueLiteral = ctx.TrueLiteral[ i ];
 
 
-							field.values.push( booleanLiteral.image === 'TRUE' );
+							if ( trueLiteral.image === 'TRUE' ) field.values.push( true );
+
+						}
+
+					}
+
+					if ( ctx.FalseLiteral ) {
+
+						field.type = 'boolean';
+
+						for ( var i = 0, l = ctx.FalseLiteral.length; i < l; i ++ ) {
+
+							var falseLiteral = ctx.FalseLiteral[ i ];
+
+							if ( falseLiteral.image === 'FALSE' ) field.values.push( false );
 
 
 						}
 						}
 
 
@@ -2408,7 +2424,8 @@ var VRMLLoader = ( function () {
 		var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
 		var RouteIdentifier = tokenVocabulary[ 'RouteIdentifier' ];
 		var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
 		var StringLiteral = tokenVocabulary[ 'StringLiteral' ];
 		var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
 		var NumberLiteral = tokenVocabulary[ 'NumberLiteral' ];
-		var BooleanLiteral = tokenVocabulary[ 'BooleanLiteral' ];
+		var TrueLiteral = tokenVocabulary[ 'TrueLiteral' ];
+		var FalseLiteral = tokenVocabulary[ 'FalseLiteral' ];
 		var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
 		var NullLiteral = tokenVocabulary[ 'NullLiteral' ];
 		var DEF = tokenVocabulary[ 'DEF' ];
 		var DEF = tokenVocabulary[ 'DEF' ];
 		var USE = tokenVocabulary[ 'USE' ];
 		var USE = tokenVocabulary[ 'USE' ];
@@ -2517,7 +2534,12 @@ var VRMLLoader = ( function () {
 					} },
 					} },
 					{ ALT: function () {
 					{ ALT: function () {
 
 
-						$.CONSUME( BooleanLiteral );
+						$.CONSUME( TrueLiteral );
+
+					} },
+					{ ALT: function () {
+
+						$.CONSUME( FalseLiteral );
 
 
 					} },
 					} },
 					{ ALT: function () {
 					{ ALT: function () {