Browse Source

Fix `^=` operator in shaders

Yuri Roubinsky 3 years ago
parent
commit
10b10ae1fa
1 changed files with 6 additions and 1 deletions
  1. 6 1
      servers/rendering/shader_language.cpp

+ 6 - 1
servers/rendering/shader_language.cpp

@@ -88,7 +88,8 @@ String ShaderLanguage::get_operator_text(Operator p_op) {
 		"--",
 		"--",
 		"()",
 		"()",
 		"construct",
 		"construct",
-		"index" };
+		"index",
+		"empty" };
 
 
 	return op_names[p_op];
 	return op_names[p_op];
 }
 }
@@ -474,6 +475,10 @@ ShaderLanguage::Token ShaderLanguage::_get_token() {
 			case ':':
 			case ':':
 				return _make_token(TK_COLON);
 				return _make_token(TK_COLON);
 			case '^':
 			case '^':
+				if (GETCHAR(0) == '=') {
+					char_idx++;
+					return _make_token(TK_OP_ASSIGN_BIT_XOR);
+				}
 				return _make_token(TK_OP_BIT_XOR);
 				return _make_token(TK_OP_BIT_XOR);
 			case '~':
 			case '~':
 				return _make_token(TK_OP_BIT_INVERT);
 				return _make_token(TK_OP_BIT_INVERT);