private object ParseGodotValue() { if (_parser.Peek() == '"') { return(ParseGodotString()); } if (_parser.PeekIsDigit()) { return(ParseGodotNumber()); } if (_parser.TryParse("ExtResource(")) { _parser.EatWhitespace(); var val = new GodotAsset.TokenExtResource((long)ParseGodotNumber()); _parser.EatWhitespace(); _parser.Parse(')'); return(val); } throw new NotImplementedException($"Unable to handle complex kv pairs: '{_parser.Peek()}'"); }
private object ParseGodotValue() { if (_parser.Peek() == '"') { return(ParseGodotString()); } if (_parser.PeekIsDigit() || _parser.Peek() == '-') { return(ParseGodotNumber()); } if (_parser.TryParse("null")) { return(null); } if (_parser.TryParse("true")) { return(true); } if (_parser.TryParse("false")) { return(false); } if (_parser.TryParse("Color(")) { _parser.EatWhitespace(); var r = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var g = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var b = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var a = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(')'); return(new Color(r, g, b, a)); } if (_parser.TryParse("Vector2(")) { _parser.EatWhitespace(); var x = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var y = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(')'); return(new Vector2(x, y)); } if (_parser.TryParse("Vector3(")) { _parser.EatWhitespace(); var x = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var y = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(','); _parser.EatWhitespace(); var z = ParseGodotFloat(); _parser.EatWhitespace(); _parser.Parse(')'); return(new Vector3(x, y, z)); } if (_parser.TryParse("ExtResource(")) { _parser.EatWhitespace(); var val = new GodotAsset.TokenExtResource((long)ParseGodotNumber()); _parser.EatWhitespace(); _parser.Parse(')'); return(val); } if (_parser.TryParse("SubResource(")) { _parser.EatWhitespace(); var val = new GodotAsset.TokenSubResource((long)ParseGodotNumber()); _parser.EatWhitespace(); _parser.Parse(')'); return(val); } throw new NotImplementedException($"Unable to handle complex kv pairs: '{_parser.Peek()}'"); }