org.openapitools.codegen.languages.GdscriptClientCodegen Maven / Gradle / Ivy
package org.openapitools.codegen.languages;
import io.swagger.v3.oas.models.media.Schema;
import io.swagger.v3.oas.models.media.StringSchema;
import org.openapitools.codegen.*;
import java.io.File;
import java.util.*;
import org.openapitools.codegen.api.TemplatingEngineAdapter;
import org.openapitools.codegen.meta.features.*;
import org.openapitools.codegen.model.ModelsMap;
import org.openapitools.codegen.templating.HandlebarsEngineAdapter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import static org.openapitools.codegen.utils.StringUtils.camelize;
public class GdscriptClientCodegen extends DefaultCodegen implements CodegenConfig {
// All generated core classes will use this affixes both in class_name and file name.
public static final String CORE_NAME_PREFIX = "coreNamePrefix";
public static final String CORE_NAME_PREFIX_VALUE = "";
public static final String CORE_NAME_SUFFIX = "coreNameSuffix";
public static final String CORE_NAME_SUFFIX_VALUE = "";
// Affixes added to reserved words ; do include the _ for snake_case.
public static final String ANTICOLLISION_PREFIX = "anticollisionPrefix";
public static final String ANTICOLLISION_PREFIX_VALUE = "some_";
public static final String ANTICOLLISION_SUFFIX = "anticollisionSuffix";
public static final String ANTICOLLISION_SUFFIX_VALUE = "";
@SuppressWarnings("FieldCanBeLocal")
private final Logger LOGGER = LoggerFactory.getLogger(GdscriptClientCodegen.class);
protected String coreNamePrefix = CORE_NAME_PREFIX_VALUE;
protected String coreNameSuffix = CORE_NAME_SUFFIX_VALUE;
protected String anticollisionPrefix = ANTICOLLISION_PREFIX_VALUE;
protected String anticollisionSuffix = ANTICOLLISION_SUFFIX_VALUE;
// We're putting the doc files right next their target code file
protected String apiDocPath = "apis/";
protected String modelDocPath = "models/";
public void setCoreNamePrefix(String prefix) {
coreNamePrefix = prefix;
}
public String getCoreNamePrefix() {
return coreNamePrefix;
}
public void setCoreNameSuffix(String coreNameSuffix) {
this.coreNameSuffix = coreNameSuffix;
}
public String getCoreNameSuffix() {
return coreNameSuffix;
}
public void setAnticollisionPrefix(String anticollisionPrefix) {
this.anticollisionPrefix = anticollisionPrefix;
}
public String getAnticollisionPrefix() {
return anticollisionPrefix;
}
public void setAnticollisionSuffix(String anticollisionSuffix) {
this.anticollisionSuffix = anticollisionSuffix;
}
public String getAnticollisionSuffix() {
return anticollisionSuffix;
}
public CodegenType getTag() {
return CodegenType.CLIENT;
}
public String getName() {
return "gdscript";
}
public String getHelp() {
return "Generates a GDScript client (Godot 4+).";
}
public GdscriptClientCodegen() {
super();
modifyFeatureSet(features -> features
.includeSchemaSupportFeatures(
SchemaSupportFeature.Simple,
SchemaSupportFeature.Composite
)
.excludeSchemaSupportFeatures(
SchemaSupportFeature.Polymorphism,
SchemaSupportFeature.Union,
SchemaSupportFeature.allOf,
SchemaSupportFeature.anyOf,
SchemaSupportFeature.oneOf,
SchemaSupportFeature.not
)
.includeDocumentationFeatures(
DocumentationFeature.Readme
)
.includeWireFormatFeatures(
WireFormatFeature.JSON
)
.excludeWireFormatFeatures(
WireFormatFeature.Custom,
WireFormatFeature.XML,
WireFormatFeature.PROTOBUF
)
.includeSecurityFeatures(
SecurityFeature.BearerToken,
SecurityFeature.ApiKey,
SecurityFeature.OAuth2_Implicit // untested
)
.excludeSecurityFeatures(
SecurityFeature.BasicAuth // desired
)
.includeDataTypeFeatures(
DataTypeFeature.Array,
DataTypeFeature.ArrayOfModel,
DataTypeFeature.Binary,
DataTypeFeature.Boolean,
DataTypeFeature.Byte,
DataTypeFeature.Custom, // help (?)
DataTypeFeature.Date,
DataTypeFeature.DateTime,
DataTypeFeature.Decimal,
DataTypeFeature.Double,
DataTypeFeature.Enum,
DataTypeFeature.File, // untested
DataTypeFeature.Float,
DataTypeFeature.Int32,
DataTypeFeature.Int64,
DataTypeFeature.Null,
DataTypeFeature.Object,
DataTypeFeature.Password,
DataTypeFeature.String,
DataTypeFeature.Uuid
)
.excludeDataTypeFeatures(
DataTypeFeature.AnyType, // Variant will be there eventually
DataTypeFeature.ArrayOfCollectionOfEnum,
DataTypeFeature.ArrayOfCollectionOfModel,
DataTypeFeature.ArrayOfCollectionOfPrimitives,
DataTypeFeature.ArrayOfEnum,
DataTypeFeature.CollectionFormat,
DataTypeFeature.CollectionFormatMulti,
DataTypeFeature.MapOfCollectionOfEnum,
DataTypeFeature.MapOfCollectionOfModel,
DataTypeFeature.MapOfCollectionOfPrimitives,
DataTypeFeature.MapOfEnum,
DataTypeFeature.MapOfModel,
DataTypeFeature.Maps
)
.includeGlobalFeatures(
GlobalFeature.BasePath,
GlobalFeature.Examples,
GlobalFeature.ExternalDocumentation,
GlobalFeature.Host,
GlobalFeature.Info,
GlobalFeature.Produces,
GlobalFeature.Consumes,
GlobalFeature.Schemes,
GlobalFeature.ParameterStyling
)
.excludeGlobalFeatures(
GlobalFeature.Callbacks,
GlobalFeature.ParameterizedServer,
GlobalFeature.MultiServer,
GlobalFeature.LinkObjects,
GlobalFeature.XMLStructureDefinitions
)
.includeParameterFeatures(
ParameterFeature.Body,
ParameterFeature.Path,
ParameterFeature.Header,
ParameterFeature.FormUnencoded,
ParameterFeature.Query
)
.excludeParameterFeatures(
ParameterFeature.FormMultipart,
ParameterFeature.Cookie
)
);
// It makes sense to package the generated code like a Godot addon, for ease of installation.
// Since most users will set the output dir, we perhaps ought to document that fact.
String addonName = "goas.client";
outputFolder = "generated-code"
+ File.separator + "gdscript"
+ File.separator + "addons"
+ File.separator + addonName;
embeddedTemplateDir = templateDir = "gdscript";
apiPackage = "apis";
modelPackage = "models";
modelTemplateFiles.put("model.handlebars", ".gd");
apiTemplateFiles.put("api.handlebars", ".gd");
apiDocTemplateFiles.put("api_doc.handlebars", ".md");
// more supported files are defined in processOpts() (they use coreNamePrefix)
setReservedWordsLowerCase(getReservedWords());
typeMapping.clear();
typeMapping.put("array", "Array");
typeMapping.put("List", "Array");
typeMapping.put("boolean", "bool");
typeMapping.put("string", "String");
typeMapping.put("int", "int");
typeMapping.put("float", "float");
typeMapping.put("number", "float");
typeMapping.put("long", "float");
typeMapping.put("short", "float");
typeMapping.put("char", "String");
typeMapping.put("double", "int");
typeMapping.put("object", "Object");
typeMapping.put("integer", "int");
typeMapping.put("map", "Dictionary");
typeMapping.put("set", "Array");
// No timezone support in Godot so I'm skipping Datetimes for now
// We might at some point enable datetime support for UTC (non-timezoned)
typeMapping.put("date", "String");
typeMapping.put("datetime", "String");
typeMapping.put("DateTime", "String"); // case matters (format: date-time)
typeMapping.put("date-time", "String"); // possibly useless
//typeMapping.put("binary", "?");
typeMapping.put("file", "String"); // untested
typeMapping.put("ByteArray", "Array");
typeMapping.put("UUID", "String");
//typeMapping.put("Error", "?");
//typeMapping.put("AnyType", "Variant");
cliOptions.add(new CliOption(CORE_NAME_PREFIX, "PascalCase prefix added to all core classes")
.defaultValue(CORE_NAME_PREFIX_VALUE));
cliOptions.add(new CliOption(CORE_NAME_SUFFIX, "PascalCase suffix added to all core classes")
.defaultValue(CORE_NAME_SUFFIX_VALUE));
cliOptions.add(new CliOption(ANTICOLLISION_PREFIX, "Prefix added at the beginning of reserved words")
.defaultValue(ANTICOLLISION_PREFIX_VALUE));
cliOptions.add(new CliOption(ANTICOLLISION_SUFFIX, "Suffix added at the ending of reserved words")
.defaultValue(ANTICOLLISION_SUFFIX_VALUE));
// Alas, I have not taken care of escaping things properly in the templates.
// I'm not sure how to handle the different escaping strategies required.
// FIXME: we can't log like this here → too verbose
//LOGGER.warn("---- THE GENERATED CODE MAY BE UNSAFE AND MALICIOUS OAS FILES MAY HURT YOU ----");
//LOGGER.warn("PLEASE READ *CAREFULLY* THE OAS FILE YOU ARE USING BEFORE YOU TRUST IT.");
}
@Override
public String defaultTemplatingEngine() {
return "handlebars";
}
public void processAdditionalProperties() {
additionalProperties.put("apiDocPath", apiDocPath);
additionalProperties.put("modelDocPath", modelDocPath);
additionalProperties.put("modelNameSuffix", modelNameSuffix);
if (additionalProperties.containsKey(CORE_NAME_PREFIX)) {
setCoreNamePrefix((String) additionalProperties.get(CORE_NAME_PREFIX));
}
writePropertyBack(CORE_NAME_PREFIX, getCoreNamePrefix());
if (additionalProperties.containsKey(CORE_NAME_SUFFIX)) {
setCoreNameSuffix((String) additionalProperties.get(CORE_NAME_SUFFIX));
}
writePropertyBack(CORE_NAME_SUFFIX, getCoreNameSuffix());
if (additionalProperties.containsKey(ANTICOLLISION_PREFIX)) {
setAnticollisionPrefix((String) additionalProperties.get(ANTICOLLISION_PREFIX));
}
writePropertyBack(ANTICOLLISION_PREFIX, getAnticollisionPrefix());
if (additionalProperties.containsKey(ANTICOLLISION_SUFFIX)) {
setAnticollisionSuffix((String) additionalProperties.get(ANTICOLLISION_SUFFIX));
}
writePropertyBack(ANTICOLLISION_SUFFIX, getAnticollisionSuffix());
}
@Override
public void processOpts() {
super.processOpts();
processAdditionalProperties();
supportingFiles.add(new SupportingFile("core/ApiBee.handlebars", "core", toCoreFilename("ApiBee") + ".gd"));
supportingFiles.add(new SupportingFile("core/ApiError.handlebars", "core", toCoreFilename("ApiError") + ".gd"));
supportingFiles.add(new SupportingFile("core/ApiConfig.handlebars", "core", toCoreFilename("ApiConfig") + ".gd"));
supportingFiles.add(new SupportingFile("core/ApiResponse.handlebars", "core", toCoreFilename("ApiResponse") + ".gd"));
supportingFiles.add(new SupportingFile("README.handlebars", "", "README.md"));
// Ensure we're using the appropriate template engine, and configure it while we're at it.
// We had to use handlebars because the truthy values of mustache include `""` and `"null"`,
// and things went south for default values and examples (but descriptions were OK, somehow)
TemplatingEngineAdapter templatingEngine = getTemplatingEngine();
if (templatingEngine instanceof HandlebarsEngineAdapter) {
HandlebarsEngineAdapter handlebars = (HandlebarsEngineAdapter) templatingEngine;
//handlebars.infiniteLoops(true); // will we want this eventually?
handlebars.setPrettyPrint(true); // removes blank lines left by flow control tags
} else {
throw new RuntimeException("Only the HandlebarsEngineAdapter is supported for this generator");
}
}
@Override
public String apiDocFileFolder() {
return (outputFolder + File.separator + apiDocPath);
}
@Override
public String modelDocFileFolder() {
return (outputFolder + File.separator + modelDocPath);
}
@Override
public String escapeUnsafeCharacters(String input) {
// There might be ways to inject code in Gdscript, but I don't see any for now. (no /* */ comments)
// TODO: review this can of worms with someone knowledgeable
return input;
}
@Override
public String escapeQuotationMark(String input) {
// I've seen some other targets REMOVE the quotation marks altogether.
// We might need to do that as well ?
// TODO: review this with someone knowledgeable
return input
.replace("\"", "\\\"")
.replace("'", "\\'")
;
}
@Override
public String escapeReservedWord(String name) {
return getAnticollisionPrefix() + name + getAnticollisionSuffix();
}
public String escapeStringLiteral(String input) {
return input
.replace("\"", "\\\"") // escape double quotes
.replaceAll("[\\\\]+$", "") // remove trailing backslash(es)
// issue: "foo\" will perhaps still wreak havoc
;
}
// In GDScript we want our file names to match our class names.
// This ensures we get the (optional) prefix and suffix added to the file name.
// Perhaps we'll even do (optional) snake_case in here later on.
@Override
public String toModelFilename(String name) {
return toModelName(name);
}
public String toCoreFilename(String name) {
return camelize(getCoreNamePrefix() + '_' + name + '_' + getCoreNameSuffix());
}
@Override
public String toExampleValue(Schema schema) {
if (schema.getExample() != null) {
return escapeStringLiteral(super.toExampleValue(schema));
}
return "";
}
@Override
public String toDefaultValue(Schema schema) {
if (schema.getDefault() != null) {
if (schema instanceof StringSchema) {
return "\"" + escapeStringLiteral(schema.getDefault().toString()) + "\"";
}
return schema.getDefault().toString();
}
if (schema instanceof StringSchema) {
return "\"\"";
}
return null; // if instead we call super here, we get "null" where we should not
}
@Override
public String getTypeDeclaration(Schema schema) {
String type = super.getTypeDeclaration(schema);
// purpose: camelize the inline response models dataType (requests are already fine)
// Possibly not the correct way to do it but I've tried many, many things.
if (type.contains("_")) {
type = camelize(type);
}
return type;
}
@Override
public Map updateAllModels(Map objs) {
objs = super.updateAllModels(objs);
String[] names = objs.keySet().toArray(new String[0]);
for (String modelName : names) {
// Skip models with jsonld, we don't support them atm
// eg: Announcement.jsonld
if (modelName.contains("jsonld")) {
objs.remove(modelName);
LOGGER.warn("Skipped model " + modelName + " (jsonld not supported)");
}
// Also skip Hydra models, we're not supporting them atm
if (modelName.contains("Hydra") || modelName.contains("hydra")) {
objs.remove(modelName);
LOGGER.warn("Skipped model " + modelName + " (hydra not supported)");
}
}
return objs;
}
protected List getReservedWords() {
return Arrays.asList(
// Local method names used in base API class
"_bzz_connect_client_if_needed", "_bzz_request", "_bzz_request_text", "_bzz_do_request_text",
"_bzz_convert_http_method", "_bzz_urlize_path_param", "_bzz_escape_path_param",
"_bzz_next_loop_iteration", "_bzz_get_content_type", "_bzz_format_error_response",
// Local properties used in base API class
"_bzz_config", "_bzz_client", "_bzz_name",
// Local variable names used in API methods (endpoints)
"bzz_method", "bzz_path", "bzz_query",
"bzz_result", "bzz_code", "bzz_headers",
"bzz_error",
// Hmmm… Will be removed eventually. Promises ! ;)
"on_success", "on_failure",
// Godot's Global Scope
// https://github.com/godotengine/godot/blob/master/doc/classes/%40GlobalScope.xml
// List generated from modules/openapi-generator/src/main/resources/gdscript/utils/extract_reserved_words.py
// Godot's global functions
"abs", "absf", "absi", "acos", "asin", "atan", "atan2", "bezier_interpolate", "bytes_to_var",
"bytes_to_var_with_objects", "ceil", "ceilf", "ceili", "clamp", "clampf", "clampi", "cos",
"cosh", "cubic_interpolate", "cubic_interpolate_angle", "cubic_interpolate_angle_in_time",
"cubic_interpolate_in_time", "db_to_linear", "deg_to_rad", "ease", "error_string", "exp",
"floor", "floorf", "floori", "fmod", "fposmod", "hash", "instance_from_id", "inverse_lerp",
"is_equal_approx", "is_finite", "is_inf", "is_instance_id_valid", "is_instance_valid",
"is_nan", "is_zero_approx", "lerp", "lerp_angle", "lerpf", "linear_to_db", "log", "max",
"maxf", "maxi", "min", "minf", "mini", "move_toward", "nearest_po2", "pingpong", "posmod",
"pow", "print", "print_rich", "print_verbose", "printerr", "printraw", "prints", "printt",
"push_error", "push_warning", "rad_to_deg", "rand_from_seed", "randf", "randf_range",
"randfn", "randi", "randi_range", "randomize", "remap", "rid_allocate_id", "rid_from_int64",
"round", "roundf", "roundi", "seed", "sign", "signf", "signi", "sin", "sinh", "smoothstep",
"snapped", "sqrt", "step_decimals", "str", "str_to_var", "tan", "tanh", "typeof",
"var_to_bytes", "var_to_bytes_with_objects", "var_to_str", "weakref", "wrap", "wrapf", "wrapi",
// Godot's global constants
"SIDE_LEFT", "SIDE_TOP", "SIDE_RIGHT", "SIDE_BOTTOM", "CORNER_TOP_LEFT",
"CORNER_TOP_RIGHT", "CORNER_BOTTOM_RIGHT", "CORNER_BOTTOM_LEFT", "VERTICAL", "HORIZONTAL",
"CLOCKWISE", "COUNTERCLOCKWISE", "HORIZONTAL_ALIGNMENT_LEFT", "HORIZONTAL_ALIGNMENT_CENTER",
"HORIZONTAL_ALIGNMENT_RIGHT", "HORIZONTAL_ALIGNMENT_FILL", "VERTICAL_ALIGNMENT_TOP",
"VERTICAL_ALIGNMENT_CENTER", "VERTICAL_ALIGNMENT_BOTTOM", "VERTICAL_ALIGNMENT_FILL",
"INLINE_ALIGNMENT_TOP_TO", "INLINE_ALIGNMENT_CENTER_TO", "INLINE_ALIGNMENT_BOTTOM_TO",
"INLINE_ALIGNMENT_TO_TOP", "INLINE_ALIGNMENT_TO_CENTER", "INLINE_ALIGNMENT_TO_BASELINE",
"INLINE_ALIGNMENT_TO_BOTTOM", "INLINE_ALIGNMENT_TOP", "INLINE_ALIGNMENT_CENTER",
"INLINE_ALIGNMENT_BOTTOM", "INLINE_ALIGNMENT_IMAGE_MASK", "INLINE_ALIGNMENT_TEXT_MASK",
"KEY_NONE", "KEY_SPECIAL", "KEY_ESCAPE", "KEY_TAB", "KEY_BACKTAB", "KEY_BACKSPACE",
"KEY_ENTER", "KEY_KP_ENTER", "KEY_INSERT", "KEY_DELETE", "KEY_PAUSE", "KEY_PRINT",
"KEY_SYSREQ", "KEY_CLEAR", "KEY_HOME", "KEY_END", "KEY_LEFT", "KEY_UP", "KEY_RIGHT",
"KEY_DOWN", "KEY_PAGEUP", "KEY_PAGEDOWN", "KEY_SHIFT", "KEY_CTRL", "KEY_META", "KEY_ALT",
"KEY_CAPSLOCK", "KEY_NUMLOCK", "KEY_SCROLLLOCK", "KEY_F1", "KEY_F2", "KEY_F3", "KEY_F4",
"KEY_F5", "KEY_F6", "KEY_F7", "KEY_F8", "KEY_F9", "KEY_F10", "KEY_F11", "KEY_F12", "KEY_F13",
"KEY_F14", "KEY_F15", "KEY_F16", "KEY_F17", "KEY_F18", "KEY_F19", "KEY_F20", "KEY_F21",
"KEY_F22", "KEY_F23", "KEY_F24", "KEY_F25", "KEY_F26", "KEY_F27", "KEY_F28", "KEY_F29",
"KEY_F30", "KEY_F31", "KEY_F32", "KEY_F33", "KEY_F34", "KEY_F35", "KEY_KP_MULTIPLY",
"KEY_KP_DIVIDE", "KEY_KP_SUBTRACT", "KEY_KP_PERIOD", "KEY_KP_ADD", "KEY_KP_0", "KEY_KP_1",
"KEY_KP_2", "KEY_KP_3", "KEY_KP_4", "KEY_KP_5", "KEY_KP_6", "KEY_KP_7", "KEY_KP_8",
"KEY_KP_9", "KEY_SUPER_L", "KEY_SUPER_R", "KEY_MENU", "KEY_HYPER_L", "KEY_HYPER_R",
"KEY_HELP", "KEY_DIRECTION_L", "KEY_DIRECTION_R", "KEY_BACK", "KEY_FORWARD", "KEY_STOP",
"KEY_REFRESH", "KEY_VOLUMEDOWN", "KEY_VOLUMEMUTE", "KEY_VOLUMEUP", "KEY_BASSBOOST",
"KEY_BASSUP", "KEY_BASSDOWN", "KEY_TREBLEUP", "KEY_TREBLEDOWN", "KEY_MEDIAPLAY",
"KEY_MEDIASTOP", "KEY_MEDIAPREVIOUS", "KEY_MEDIANEXT", "KEY_MEDIARECORD", "KEY_HOMEPAGE",
"KEY_FAVORITES", "KEY_SEARCH", "KEY_STANDBY", "KEY_OPENURL", "KEY_LAUNCHMAIL",
"KEY_LAUNCHMEDIA", "KEY_LAUNCH0", "KEY_LAUNCH1", "KEY_LAUNCH2", "KEY_LAUNCH3", "KEY_LAUNCH4",
"KEY_LAUNCH5", "KEY_LAUNCH6", "KEY_LAUNCH7", "KEY_LAUNCH8", "KEY_LAUNCH9", "KEY_LAUNCHA",
"KEY_LAUNCHB", "KEY_LAUNCHC", "KEY_LAUNCHD", "KEY_LAUNCHE", "KEY_LAUNCHF", "KEY_UNKNOWN",
"KEY_SPACE", "KEY_EXCLAM", "KEY_QUOTEDBL", "KEY_NUMBERSIGN", "KEY_DOLLAR", "KEY_PERCENT",
"KEY_AMPERSAND", "KEY_APOSTROPHE", "KEY_PARENLEFT", "KEY_PARENRIGHT", "KEY_ASTERISK",
"KEY_PLUS", "KEY_COMMA", "KEY_MINUS", "KEY_PERIOD", "KEY_SLASH", "KEY_0", "KEY_1", "KEY_2",
"KEY_3", "KEY_4", "KEY_5", "KEY_6", "KEY_7", "KEY_8", "KEY_9", "KEY_COLON", "KEY_SEMICOLON",
"KEY_LESS", "KEY_EQUAL", "KEY_GREATER", "KEY_QUESTION", "KEY_AT", "KEY_A", "KEY_B", "KEY_C",
"KEY_D", "KEY_E", "KEY_F", "KEY_G", "KEY_H", "KEY_I", "KEY_J", "KEY_K", "KEY_L", "KEY_M",
"KEY_N", "KEY_O", "KEY_P", "KEY_Q", "KEY_R", "KEY_S", "KEY_T", "KEY_U", "KEY_V", "KEY_W",
"KEY_X", "KEY_Y", "KEY_Z", "KEY_BRACKETLEFT", "KEY_BACKSLASH", "KEY_BRACKETRIGHT",
"KEY_ASCIICIRCUM", "KEY_UNDERSCORE", "KEY_QUOTELEFT", "KEY_BRACELEFT", "KEY_BAR",
"KEY_BRACERIGHT", "KEY_ASCIITILDE", "KEY_NOBREAKSPACE", "KEY_EXCLAMDOWN", "KEY_CENT",
"KEY_STERLING", "KEY_CURRENCY", "KEY_YEN", "KEY_BROKENBAR", "KEY_SECTION", "KEY_DIAERESIS",
"KEY_COPYRIGHT", "KEY_ORDFEMININE", "KEY_GUILLEMOTLEFT", "KEY_NOTSIGN", "KEY_HYPHEN",
"KEY_REGISTERED", "KEY_MACRON", "KEY_DEGREE", "KEY_PLUSMINUS", "KEY_TWOSUPERIOR",
"KEY_THREESUPERIOR", "KEY_ACUTE", "KEY_MU", "KEY_PARAGRAPH", "KEY_PERIODCENTERED",
"KEY_CEDILLA", "KEY_ONESUPERIOR", "KEY_MASCULINE", "KEY_GUILLEMOTRIGHT", "KEY_ONEQUARTER",
"KEY_ONEHALF", "KEY_THREEQUARTERS", "KEY_QUESTIONDOWN", "KEY_AGRAVE", "KEY_AACUTE",
"KEY_ACIRCUMFLEX", "KEY_ATILDE", "KEY_ADIAERESIS", "KEY_ARING", "KEY_AE", "KEY_CCEDILLA",
"KEY_EGRAVE", "KEY_EACUTE", "KEY_ECIRCUMFLEX", "KEY_EDIAERESIS", "KEY_IGRAVE", "KEY_IACUTE",
"KEY_ICIRCUMFLEX", "KEY_IDIAERESIS", "KEY_ETH", "KEY_NTILDE", "KEY_OGRAVE", "KEY_OACUTE",
"KEY_OCIRCUMFLEX", "KEY_OTILDE", "KEY_ODIAERESIS", "KEY_MULTIPLY", "KEY_OOBLIQUE",
"KEY_UGRAVE", "KEY_UACUTE", "KEY_UCIRCUMFLEX", "KEY_UDIAERESIS", "KEY_YACUTE", "KEY_THORN",
"KEY_SSHARP", "KEY_DIVISION", "KEY_YDIAERESIS", "KEY_CODE_MASK", "KEY_MODIFIER_MASK",
"KEY_MASK_CMD_OR_CTRL", "KEY_MASK_SHIFT", "KEY_MASK_ALT", "KEY_MASK_META", "KEY_MASK_CTRL",
"KEY_MASK_KPAD", "KEY_MASK_GROUP_SWITCH", "MOUSE_BUTTON_NONE", "MOUSE_BUTTON_LEFT",
"MOUSE_BUTTON_RIGHT", "MOUSE_BUTTON_MIDDLE", "MOUSE_BUTTON_WHEEL_UP",
"MOUSE_BUTTON_WHEEL_DOWN", "MOUSE_BUTTON_WHEEL_LEFT", "MOUSE_BUTTON_WHEEL_RIGHT",
"MOUSE_BUTTON_XBUTTON1", "MOUSE_BUTTON_XBUTTON2", "MOUSE_BUTTON_MASK_LEFT",
"MOUSE_BUTTON_MASK_RIGHT", "MOUSE_BUTTON_MASK_MIDDLE", "MOUSE_BUTTON_MASK_XBUTTON1",
"MOUSE_BUTTON_MASK_XBUTTON2", "JOY_BUTTON_INVALID", "JOY_BUTTON_A", "JOY_BUTTON_B",
"JOY_BUTTON_X", "JOY_BUTTON_Y", "JOY_BUTTON_BACK", "JOY_BUTTON_GUIDE", "JOY_BUTTON_START",
"JOY_BUTTON_LEFT_STICK", "JOY_BUTTON_RIGHT_STICK", "JOY_BUTTON_LEFT_SHOULDER",
"JOY_BUTTON_RIGHT_SHOULDER", "JOY_BUTTON_DPAD_UP", "JOY_BUTTON_DPAD_DOWN",
"JOY_BUTTON_DPAD_LEFT", "JOY_BUTTON_DPAD_RIGHT", "JOY_BUTTON_MISC1", "JOY_BUTTON_PADDLE1",
"JOY_BUTTON_PADDLE2", "JOY_BUTTON_PADDLE3", "JOY_BUTTON_PADDLE4", "JOY_BUTTON_TOUCHPAD",
"JOY_BUTTON_SDL_MAX", "JOY_BUTTON_MAX", "JOY_AXIS_INVALID", "JOY_AXIS_LEFT_X",
"JOY_AXIS_LEFT_Y", "JOY_AXIS_RIGHT_X", "JOY_AXIS_RIGHT_Y", "JOY_AXIS_TRIGGER_LEFT",
"JOY_AXIS_TRIGGER_RIGHT", "JOY_AXIS_SDL_MAX", "JOY_AXIS_MAX", "MIDI_MESSAGE_NONE",
"MIDI_MESSAGE_NOTE_OFF", "MIDI_MESSAGE_NOTE_ON", "MIDI_MESSAGE_AFTERTOUCH",
"MIDI_MESSAGE_CONTROL_CHANGE", "MIDI_MESSAGE_PROGRAM_CHANGE", "MIDI_MESSAGE_CHANNEL_PRESSURE",
"MIDI_MESSAGE_PITCH_BEND", "MIDI_MESSAGE_SYSTEM_EXCLUSIVE", "MIDI_MESSAGE_QUARTER_FRAME",
"MIDI_MESSAGE_SONG_POSITION_POINTER", "MIDI_MESSAGE_SONG_SELECT", "MIDI_MESSAGE_TUNE_REQUEST",
"MIDI_MESSAGE_TIMING_CLOCK", "MIDI_MESSAGE_START", "MIDI_MESSAGE_CONTINUE",
"MIDI_MESSAGE_STOP", "MIDI_MESSAGE_ACTIVE_SENSING", "MIDI_MESSAGE_SYSTEM_RESET", "OK",
"FAILED", "ERR_UNAVAILABLE", "ERR_UNCONFIGURED", "ERR_UNAUTHORIZED",
"ERR_PARAMETER_RANGE_ERROR", "ERR_OUT_OF_MEMORY", "ERR_FILE_NOT_FOUND", "ERR_FILE_BAD_DRIVE",
"ERR_FILE_BAD_PATH", "ERR_FILE_NO_PERMISSION", "ERR_FILE_ALREADY_IN_USE",
"ERR_FILE_CANT_OPEN", "ERR_FILE_CANT_WRITE", "ERR_FILE_CANT_READ", "ERR_FILE_UNRECOGNIZED",
"ERR_FILE_CORRUPT", "ERR_FILE_MISSING_DEPENDENCIES", "ERR_FILE_EOF", "ERR_CANT_OPEN",
"ERR_CANT_CREATE", "ERR_QUERY_FAILED", "ERR_ALREADY_IN_USE", "ERR_LOCKED", "ERR_TIMEOUT",
"ERR_CANT_CONNECT", "ERR_CANT_RESOLVE", "ERR_CONNECTION_ERROR", "ERR_CANT_ACQUIRE_RESOURCE",
"ERR_CANT_FORK", "ERR_INVALID_DATA", "ERR_INVALID_PARAMETER", "ERR_ALREADY_EXISTS",
"ERR_DOES_NOT_EXIST", "ERR_DATABASE_CANT_READ", "ERR_DATABASE_CANT_WRITE",
"ERR_COMPILATION_FAILED", "ERR_METHOD_NOT_FOUND", "ERR_LINK_FAILED", "ERR_SCRIPT_FAILED",
"ERR_CYCLIC_LINK", "ERR_INVALID_DECLARATION", "ERR_DUPLICATE_SYMBOL", "ERR_PARSE_ERROR",
"ERR_BUSY", "ERR_SKIP", "ERR_HELP", "ERR_BUG", "ERR_PRINTER_ON_FIRE", "PROPERTY_HINT_NONE",
"PROPERTY_HINT_RANGE", "PROPERTY_HINT_ENUM", "PROPERTY_HINT_ENUM_SUGGESTION",
"PROPERTY_HINT_EXP_EASING", "PROPERTY_HINT_LINK", "PROPERTY_HINT_FLAGS",
"PROPERTY_HINT_LAYERS_2D_RENDER", "PROPERTY_HINT_LAYERS_2D_PHYSICS",
"PROPERTY_HINT_LAYERS_2D_NAVIGATION", "PROPERTY_HINT_LAYERS_3D_RENDER",
"PROPERTY_HINT_LAYERS_3D_PHYSICS", "PROPERTY_HINT_LAYERS_3D_NAVIGATION", "PROPERTY_HINT_FILE",
"PROPERTY_HINT_DIR", "PROPERTY_HINT_GLOBAL_FILE", "PROPERTY_HINT_GLOBAL_DIR",
"PROPERTY_HINT_RESOURCE_TYPE", "PROPERTY_HINT_MULTILINE_TEXT", "PROPERTY_HINT_EXPRESSION",
"PROPERTY_HINT_PLACEHOLDER_TEXT", "PROPERTY_HINT_COLOR_NO_ALPHA",
"PROPERTY_HINT_IMAGE_COMPRESS_LOSSY", "PROPERTY_HINT_IMAGE_COMPRESS_LOSSLESS",
"PROPERTY_HINT_OBJECT_ID", "PROPERTY_HINT_TYPE_STRING",
"PROPERTY_HINT_NODE_PATH_TO_EDITED_NODE", "PROPERTY_HINT_METHOD_OF_VARIANT_TYPE",
"PROPERTY_HINT_METHOD_OF_BASE_TYPE", "PROPERTY_HINT_METHOD_OF_INSTANCE",
"PROPERTY_HINT_METHOD_OF_SCRIPT", "PROPERTY_HINT_PROPERTY_OF_VARIANT_TYPE",
"PROPERTY_HINT_PROPERTY_OF_BASE_TYPE", "PROPERTY_HINT_PROPERTY_OF_INSTANCE",
"PROPERTY_HINT_PROPERTY_OF_SCRIPT", "PROPERTY_HINT_OBJECT_TOO_BIG",
"PROPERTY_HINT_NODE_PATH_VALID_TYPES", "PROPERTY_HINT_SAVE_FILE",
"PROPERTY_HINT_GLOBAL_SAVE_FILE", "PROPERTY_HINT_INT_IS_OBJECTID",
"PROPERTY_HINT_INT_IS_POINTER", "PROPERTY_HINT_ARRAY_TYPE", "PROPERTY_HINT_LOCALE_ID",
"PROPERTY_HINT_LOCALIZABLE_STRING", "PROPERTY_HINT_NODE_TYPE",
"PROPERTY_HINT_HIDE_QUATERNION_EDIT", "PROPERTY_HINT_PASSWORD", "PROPERTY_HINT_MAX",
"PROPERTY_USAGE_NONE", "PROPERTY_USAGE_STORAGE", "PROPERTY_USAGE_EDITOR",
"PROPERTY_USAGE_CHECKABLE", "PROPERTY_USAGE_CHECKED", "PROPERTY_USAGE_INTERNATIONALIZED",
"PROPERTY_USAGE_GROUP", "PROPERTY_USAGE_CATEGORY", "PROPERTY_USAGE_SUBGROUP",
"PROPERTY_USAGE_CLASS_IS_BITFIELD", "PROPERTY_USAGE_NO_INSTANCE_STATE",
"PROPERTY_USAGE_RESTART_IF_CHANGED", "PROPERTY_USAGE_SCRIPT_VARIABLE",
"PROPERTY_USAGE_STORE_IF_NULL", "PROPERTY_USAGE_ANIMATE_AS_TRIGGER",
"PROPERTY_USAGE_UPDATE_ALL_IF_MODIFIED", "PROPERTY_USAGE_SCRIPT_DEFAULT_VALUE",
"PROPERTY_USAGE_CLASS_IS_ENUM", "PROPERTY_USAGE_NIL_IS_VARIANT", "PROPERTY_USAGE_INTERNAL",
"PROPERTY_USAGE_DO_NOT_SHARE_ON_DUPLICATE", "PROPERTY_USAGE_HIGH_END_GFX",
"PROPERTY_USAGE_NODE_PATH_FROM_SCENE_ROOT", "PROPERTY_USAGE_RESOURCE_NOT_PERSISTENT",
"PROPERTY_USAGE_KEYING_INCREMENTS", "PROPERTY_USAGE_DEFERRED_SET_RESOURCE",
"PROPERTY_USAGE_EDITOR_INSTANTIATE_OBJECT", "PROPERTY_USAGE_EDITOR_BASIC_SETTING",
"PROPERTY_USAGE_READ_ONLY", "PROPERTY_USAGE_ARRAY", "PROPERTY_USAGE_DEFAULT",
"PROPERTY_USAGE_DEFAULT_INTL", "PROPERTY_USAGE_NO_EDITOR", "METHOD_FLAG_NORMAL",
"METHOD_FLAG_EDITOR", "METHOD_FLAG_CONST", "METHOD_FLAG_VIRTUAL", "METHOD_FLAG_VARARG",
"METHOD_FLAG_STATIC", "METHOD_FLAG_OBJECT_CORE", "METHOD_FLAGS_DEFAULT", "TYPE_NIL",
"TYPE_BOOL", "TYPE_INT", "TYPE_FLOAT", "TYPE_STRING", "TYPE_VECTOR2", "TYPE_VECTOR2I",
"TYPE_RECT2", "TYPE_RECT2I", "TYPE_VECTOR3", "TYPE_VECTOR3I", "TYPE_TRANSFORM2D",
"TYPE_VECTOR4", "TYPE_VECTOR4I", "TYPE_PLANE", "TYPE_QUATERNION", "TYPE_AABB", "TYPE_BASIS",
"TYPE_TRANSFORM3D", "TYPE_PROJECTION", "TYPE_COLOR", "TYPE_STRING_NAME", "TYPE_NODE_PATH",
"TYPE_RID", "TYPE_OBJECT", "TYPE_CALLABLE", "TYPE_SIGNAL", "TYPE_DICTIONARY", "TYPE_ARRAY",
"TYPE_PACKED_BYTE_ARRAY", "TYPE_PACKED_INT32_ARRAY", "TYPE_PACKED_INT64_ARRAY",
"TYPE_PACKED_FLOAT32_ARRAY", "TYPE_PACKED_FLOAT64_ARRAY", "TYPE_PACKED_STRING_ARRAY",
"TYPE_PACKED_VECTOR2_ARRAY", "TYPE_PACKED_VECTOR3_ARRAY", "TYPE_PACKED_COLOR_ARRAY",
"TYPE_MAX", "OP_EQUAL", "OP_NOT_EQUAL", "OP_LESS", "OP_LESS_EQUAL", "OP_GREATER",
"OP_GREATER_EQUAL", "OP_ADD", "OP_SUBTRACT", "OP_MULTIPLY", "OP_DIVIDE", "OP_NEGATE",
"OP_POSITIVE", "OP_MODULE", "OP_POWER", "OP_SHIFT_LEFT", "OP_SHIFT_RIGHT", "OP_BIT_AND",
"OP_BIT_OR", "OP_BIT_XOR", "OP_BIT_NEGATE", "OP_AND", "OP_OR", "OP_XOR", "OP_NOT", "OP_IN",
"OP_MAX",
// Godot's singletons
"AudioServer", "CameraServer", "ClassDB", "DisplayServer", "Engine",
"EngineDebugger", "Geometry2D", "Geometry3D", "GodotSharp", "IP", "Input", "InputMap",
"JavaClassWrapper", "JavaScriptBridge", "Marshalls", "NativeExtensionManager",
"NavigationMeshGenerator", "NavigationServer2D", "NavigationServer3D", "OS", "Performance",
"PhysicsServer2D", "PhysicsServer2DManager", "PhysicsServer3D", "PhysicsServer3DManager",
"ProjectSettings", "RenderingServer", "ResourceLoader", "ResourceSaver", "ResourceUID",
"TextServerManager", "ThemeDB", "Time", "TranslationServer", "WorkerThreadPool", "XRServer",
// Tokens from GDScript
// https://github.com/godotengine/godot/blob/master/modules/gdscript/gdscript_tokenizer.cpp
// Logical
"and", "or", "not",
// Control flow
"if", "elif", "else", "for", "while", "break", "continue", "pass", "return", "match",
// Keywords – hey, namespace is here, and so is trait !
"as", "assert", "await", "breakpoint", "class", "class_name", "const", "enum", "extends",
"func", "in", "is", "namespace", "preload", "self", "signal", "static", "super", "trait",
"var", "void", "yield",
// Constants
"PI", "TAU", "INF", "NaN",
// Primitive (lowercase) types
"float", "int", "bool",
// Types
"AABB",
"AcceptDialog",
"AESContext",
"AnimatableBody2D",
"AnimatableBody3D",
"AnimatedSprite2D",
"AnimatedSprite3D",
"AnimatedTexture",
"AnimationLibrary",
"AnimationNodeAdd2",
"AnimationNodeAdd3",
"AnimationNodeAnimation",
"AnimationNodeBlend2",
"AnimationNodeBlend3",
"AnimationNodeBlendSpace1D",
"AnimationNodeBlendSpace2D",
"AnimationNodeBlendTree",
"AnimationNodeOneShot",
"AnimationNodeOutput",
"AnimationNodeStateMachinePlayback",
"AnimationNodeStateMachineTransition",
"AnimationNodeStateMachine",
"AnimationNodeSync",
"AnimationNodeTimeScale",
"AnimationNodeTimeSeek",
"AnimationNodeTransition",
"AnimationNode",
"AnimationPlayer",
"AnimationRootNode",
"AnimationTrackEditPlugin",
"AnimationTree",
"Animation",
"Area2D",
"Area3D",
"ArrayMesh",
"ArrayOccluder3D",
"AspectRatioContainer",
"AStar2D",
"AStar3D",
"AStarGrid2D",
"AtlasTexture",
"AudioBusLayout",
"AudioEffectAmplify",
"AudioEffectBandLimitFilter",
"AudioEffectBandPassFilter",
"AudioEffectCapture",
"AudioEffectChorus",
"AudioEffectCompressor",
"AudioEffectDelay",
"AudioEffectDistortion",
"AudioEffectEQ10",
"AudioEffectEQ21",
"AudioEffectEQ6",
"AudioEffectEQ",
"AudioEffectFilter",
"AudioEffectHighPassFilter",
"AudioEffectHighShelfFilter",
"AudioEffectInstance",
"AudioEffectLimiter",
"AudioEffectLowPassFilter",
"AudioEffectLowShelfFilter",
"AudioEffectNotchFilter",
"AudioEffectPanner",
"AudioEffectPhaser",
"AudioEffectPitchShift",
"AudioEffectRecord",
"AudioEffectReverb",
"AudioEffectSpectrumAnalyzerInstance",
"AudioEffectSpectrumAnalyzer",
"AudioEffectStereoEnhance",
"AudioEffect",
"AudioListener2D",
"AudioListener3D",
"AudioServer",
"AudioStreamGeneratorPlayback",
"AudioStreamGenerator",
"AudioStreamMicrophone",
"AudioStreamPlaybackResampled",
"AudioStreamPlayback",
"AudioStreamPlayer2D",
"AudioStreamPlayer3D",
"AudioStreamPlayer",
"AudioStreamRandomizer",
"AudioStreamWAV",
"AudioStream",
"BackBufferCopy",
"BaseButton",
"BaseMaterial3D",
"Basis",
"BitMap",
"Bone2D",
"BoneAttachment3D",
"BoneMap",
"BoxContainer",
"BoxMesh",
"BoxOccluder3D",
"BoxShape3D",
"ButtonGroup",
"Button",
"Callable",
"CallbackTweener",
"Camera2D",
"Camera3D",
"CameraAttributesPhysical",
"CameraAttributesPractical",
"CameraAttributes",
"CameraFeed",
"CameraServer",
"CameraTexture",
"CanvasGroup",
"CanvasItemMaterial",
"CanvasItem",
"CanvasLayer",
"CanvasModulate",
"CanvasTexture",
"CapsuleMesh",
"CapsuleShape2D",
"CapsuleShape3D",
"CenterContainer",
"CharacterBody2D",
"CharacterBody3D",
"CharFXTransform",
"CheckBox",
"CheckButton",
"CircleShape2D",
"ClassDB",
"CodeEdit",
"CodeHighlighter",
"CollisionObject2D",
"CollisionObject3D",
"CollisionPolygon2D",
"CollisionPolygon3D",
"CollisionShape2D",
"CollisionShape3D",
"ColorPickerButton",
"ColorPicker",
"ColorRect",
"Color",
"CompressedCubemapArray",
"CompressedCubemap",
"CompressedTexture2DArray",
"CompressedTexture2D",
"CompressedTexture3D",
"CompressedTextureLayered",
"ConcavePolygonShape2D",
"ConcavePolygonShape3D",
"ConeTwistJoint3D",
"ConfigFile",
"ConfirmationDialog",
"Container",
"Control",
"ConvexPolygonShape2D",
"ConvexPolygonShape3D",
"CPUParticles2D",
"CPUParticles3D",
"CryptoKey",
"Crypto",
"CubemapArray",
"Cubemap",
"Curve2D",
"Curve3D",
"CurveTexture",
"Curve",
"CurveXYZTexture",
"CylinderMesh",
"CylinderShape3D",
"DampedSpringJoint2D",
"Decal",
"Dictionary",
"DirAccess",
"DirectionalLight2D",
"DirectionalLight3D",
"DisplayServer",
"DTLSServer",
"EditorCommandPalette",
"EditorDebuggerPlugin",
"EditorExportPlatform",
"EditorExportPlugin",
"EditorFeatureProfile",
"EditorFileDialog",
"EditorFileSystemDirectory",
"EditorFileSystemImportFormatSupportQuery",
"EditorFileSystem",
"EditorImportPlugin",
"EditorInspectorPlugin",
"EditorInspector",
"EditorInterface",
"EditorNode3DGizmoPlugin",
"EditorNode3DGizmo",
"EditorPaths",
"EditorPlugin",
"EditorProperty",
"EditorResourceConversionPlugin",
"EditorResourcePicker",
"EditorResourcePreviewGenerator",
"EditorResourcePreview",
"EditorSceneFormatImporter",
"EditorScenePostImportPlugin",
"EditorScenePostImport",
"EditorScriptPicker",
"EditorScript",
"EditorSelection",
"EditorSettings",
"EditorSpinSlider",
"EditorSyntaxHighlighter",
"EditorTranslationParserPlugin",
"EditorUndoRedoManager",
"EditorVCSInterface",
"EncodedObjectAsID",
"EngineDebugger",
"EngineProfiler",
"Engine",
"Environment",
"Expression",
"FileAccess",
"FileDialog",
"FileSystemDock",
"FlowContainer",
"FogMaterial",
"FogVolume",
"FontFile",
"FontVariation",
"Font",
"Generic6DOFJoint3D",
"Geometry2D",
"Geometry3D",
"GeometryInstance3D",
"GPUParticles2D",
"GPUParticles3D",
"GPUParticlesAttractor3D",
"GPUParticlesAttractorBox3D",
"GPUParticlesAttractorSphere3D",
"GPUParticlesAttractorVectorField3D",
"GPUParticlesCollision3D",
"GPUParticlesCollisionBox3D",
"GPUParticlesCollisionHeightField3D",
"GPUParticlesCollisionSDF3D",
"GPUParticlesCollisionSphere3D",
"GradientTexture1D",
"GradientTexture2D",
"Gradient",
"GraphEdit",
"GraphNode",
"GridContainer",
"GrooveJoint2D",
"HashingContext",
"HBoxContainer",
"HeightMapShape3D",
"HFlowContainer",
"HingeJoint3D",
"HMACContext",
"HScrollBar",
"HSeparator",
"HSlider",
"HSplitContainer",
"HTTPClient",
"HTTPRequest",
"ImageFormatLoaderExtension",
"ImageFormatLoader",
"ImageTexture3D",
"ImageTextureLayered",
"ImageTexture",
"Image",
"ImmediateMesh",
"ImporterMeshInstance3D",
"ImporterMesh",
"InputEventAction",
"InputEventFromWindow",
"InputEventGesture",
"InputEventJoypadButton",
"InputEventJoypadMotion",
"InputEventKey",
"InputEventMagnifyGesture",
"InputEventMIDI",
"InputEventMouseButton",
"InputEventMouseMotion",
"InputEventMouse",
"InputEventPanGesture",
"InputEventScreenDrag",
"InputEventScreenTouch",
"InputEventShortcut",
"InputEventWithModifiers",
"InputEvent",
"InputMap",
"Input",
"InstancePlaceholder",
"IntervalTweener",
"IP",
"ItemList",
"JavaClassWrapper",
"JavaClass",
"JavaScriptBridge",
"JavaScriptObject",
"JNISingleton",
"Joint2D",
"Joint3D",
"JSONRPC",
"JSON",
"KinematicCollision2D",
"KinematicCollision3D",
"Label3D",
"LabelSettings",
"Label",
"Light2D",
"Light3D",
"LightmapGIData",
"LightmapGI",
"LightmapperRD",
"Lightmapper",
"LightmapProbe",
"LightOccluder2D",
"Line2D",
"LineEdit",
"LinkButton",
"MainLoop",
"MarginContainer",
"Marker2D",
"Marker3D",
"Marshalls",
"Material",
"MenuBar",
"MenuButton",
"MeshDataTool",
"MeshInstance2D",
"MeshInstance3D",
"MeshLibrary",
"MeshTexture",
"Mesh",
"MethodTweener",
"MissingNode",
"MissingResource",
"MovieWriter",
"MultiMeshInstance2D",
"MultiMeshInstance3D",
"MultiMesh",
"MultiplayerAPIExtension",
"MultiplayerAPI",
"MultiplayerPeerExtension",
"MultiplayerPeer",
"Mutex",
"NativeExtensionManager",
"NativeExtension",
"NavigationAgent2D",
"NavigationAgent3D",
"NavigationLink2D",
"NavigationLink3D",
"NavigationMeshGenerator",
"NavigationMesh",
"NavigationObstacle2D",
"NavigationObstacle3D",
"NavigationPathQueryParameters2D",
"NavigationPathQueryParameters3D",
"NavigationPathQueryResult2D",
"NavigationPathQueryResult3D",
"NavigationPolygon",
"NavigationRegion2D",
"NavigationRegion3D",
"NavigationServer2D",
"NavigationServer3D",
"NinePatchRect",
"Node2D",
"Node3DGizmo",
"Node3D",
"NodePath",
"Node",
"Object",
"Occluder3D",
"OccluderInstance3D",
"OccluderPolygon2D",
"OmniLight3D",
"OptimizedTranslation",
"OptionButton",
"ORMMaterial3D",
"OS",
"PackedByteArray",
"PackedColorArray",
"PackedDataContainerRef",
"PackedDataContainer",
"PackedFloat32Array",
"PackedFloat64Array",
"PackedInt32Array",
"PackedInt64Array",
"PackedScene",
"PackedStringArray",
"PackedVector2Array",
"PackedVector3Array",
"PacketPeerDTLS",
"PacketPeerExtension",
"PacketPeerStream",
"PacketPeerUDP",
"PacketPeer",
"PanelContainer",
"Panel",
"PanoramaSkyMaterial",
"ParallaxBackground",
"ParallaxLayer",
"ParticleProcessMaterial",
"Path2D",
"Path3D",
"PathFollow2D",
"PathFollow3D",
"PCKPacker",
"Performance",
"PhysicalBone2D",
"PhysicalBone3D",
"PhysicalSkyMaterial",
"PhysicsBody2D",
"PhysicsBody3D",
"PhysicsDirectBodyState2DExtension",
"PhysicsDirectBodyState2D",
"PhysicsDirectBodyState3DExtension",
"PhysicsDirectBodyState3D",
"PhysicsDirectSpaceState2DExtension",
"PhysicsDirectSpaceState2D",
"PhysicsDirectSpaceState3DExtension",
"PhysicsDirectSpaceState3D",
"PhysicsMaterial",
"PhysicsPointQueryParameters2D",
"PhysicsPointQueryParameters3D",
"PhysicsRayQueryParameters2D",
"PhysicsRayQueryParameters3D",
"PhysicsServer2DExtension",
"PhysicsServer2DManager",
"PhysicsServer2D",
"PhysicsServer3DExtension",
"PhysicsServer3DManager",
"PhysicsServer3DRenderingServerHandler",
"PhysicsServer3D",
"PhysicsShapeQueryParameters2D",
"PhysicsShapeQueryParameters3D",
"PhysicsTestMotionParameters2D",
"PhysicsTestMotionParameters3D",
"PhysicsTestMotionResult2D",
"PhysicsTestMotionResult3D",
"PinJoint2D",
"PinJoint3D",
"PlaceholderCubemapArray",
"PlaceholderCubemap",
"PlaceholderMaterial",
"PlaceholderMesh",
"PlaceholderTexture2DArray",
"PlaceholderTexture2D",
"PlaceholderTexture3D",
"PlaceholderTextureLayered",
"PlaneMesh",
"Plane",
"PointLight2D",
"PointMesh",
"Polygon2D",
"PolygonOccluder3D",
"PolygonPathFinder",
"PopupMenu",
"PopupPanel",
"Popup",
"PortableCompressedTexture2D",
"PrimitiveMesh",
"PrismMesh",
"ProceduralSkyMaterial",
"ProgressBar",
"Projection",
"ProjectSettings",
"PropertyTweener",
"QuadMesh",
"QuadOccluder3D",
"Quaternion",
"RandomNumberGenerator",
"Range",
"RayCast2D",
"RayCast3D",
"RDAttachmentFormat",
"RDFramebufferPass",
"RDPipelineColorBlendStateAttachment",
"RDPipelineColorBlendState",
"RDPipelineDepthStencilState",
"RDPipelineMultisampleState",
"RDPipelineRasterizationState",
"RDPipelineSpecializationConstant",
"RDSamplerState",
"RDShaderFile",
"RDShaderSource",
"RDShaderSPIRV",
"RDTextureFormat",
"RDTextureView",
"RDUniform",
"RDVertexAttribute",
"Rect2i",
"Rect2",
"RectangleShape2D",
"RefCounted",
"ReferenceRect",
"ReflectionProbe",
"RemoteTransform2D",
"RemoteTransform3D",
"RenderingDevice",
"RenderingServer",
"ResourceFormatLoader",
"ResourceFormatSaver",
"ResourceImporter",
"ResourceLoader",
"ResourcePreloader",
"ResourceSaver",
"ResourceUID",
"Resource",
"RibbonTrailMesh",
"RichTextEffect",
"RichTextLabel",
"RID",
"RigidBody2D",
"RigidBody3D",
"RootMotionView",
"SceneState",
"SceneTreeTimer",
"SceneTree",
"ScriptCreateDialog",
"ScriptEditorBase",
"ScriptEditor",
"ScriptExtension",
"ScriptLanguageExtension",
"ScriptLanguage",
"Script",
"ScrollBar",
"ScrollContainer",
"SegmentShape2D",
"Semaphore",
"SeparationRayShape2D",
"SeparationRayShape3D",
"Separator",
"ShaderGlobalsOverride",
"ShaderInclude",
"ShaderMaterial",
"Shader",
"Shape2D",
"Shape3D",
"ShapeCast2D",
"ShapeCast3D",
"Shortcut",
"Signal",
"Skeleton2D",
"Skeleton3D",
"SkeletonIK3D",
"SkeletonModification2DCCDIK",
"SkeletonModification2DFABRIK",
"SkeletonModification2DJiggle",
"SkeletonModification2DLookAt",
"SkeletonModification2DPhysicalBones",
"SkeletonModification2DStackHolder",
"SkeletonModification2DTwoBoneIK",
"SkeletonModification2D",
"SkeletonModification3DCCDIK",
"SkeletonModification3DFABRIK",
"SkeletonModification3DJiggle",
"SkeletonModification3DLookAt",
"SkeletonModification3DStackHolder",
"SkeletonModification3DTwoBoneIK",
"SkeletonModification3D",
"SkeletonModificationStack2D",
"SkeletonModificationStack3D",
"SkeletonProfileHumanoid",
"SkeletonProfile",
"SkinReference",
"Skin",
"Sky",
"SliderJoint3D",
"Slider",
"SoftBody3D",
"SphereMesh",
"SphereOccluder3D",
"SphereShape3D",
"SpinBox",
"SplitContainer",
"SpotLight3D",
"SpringArm3D",
"Sprite2D",
"Sprite3D",
"SpriteBase3D",
"SpriteFrames",
"StandardMaterial3D",
"StaticBody2D",
"StaticBody3D",
"StreamPeerBuffer",
"StreamPeerExtension",
"StreamPeerGZIP",
"StreamPeerTCP",
"StreamPeerTLS",
"StreamPeer",
"StringName",
"String",
"StyleBoxEmpty",
"StyleBoxFlat",
"StyleBoxLine",
"StyleBoxTexture",
"StyleBox",
"SubViewportContainer",
"SubViewport",
"SurfaceTool",
"SyntaxHighlighter",
"SystemFont",
"TabBar",
"TabContainer",
"TCPServer",
"TextEdit",
"TextLine",
"TextMesh",
"TextParagraph",
"TextServerDummy",
"TextServerExtension",
"TextServerManager",
"TextServer",
"Texture2DArray",
"Texture2D",
"Texture3D",
"TextureButton",
"TextureLayered",
"TextureProgressBar",
"TextureRect",
"Texture",
"ThemeDB",
"Theme",
"Thread",
"TileData",
"TileMapPattern",
"TileMap",
"TileSetAtlasSource",
"TileSetScenesCollectionSource",
"TileSetSource",
"TileSet",
"Timer",
"Time",
"TorusMesh",
"TouchScreenButton",
"Transform2D",
"Transform3D",
"TranslationServer",
"Translation",
"TreeItem",
"Tree",
"TriangleMesh",
"TubeTrailMesh",
"Tweener",
"Tween",
"UDPServer",
"UndoRedo",
"Variant",
"VBoxContainer",
"Vector2i",
"Vector2",
"Vector3i",
"Vector3",
"Vector4i",
"Vector4",
"VehicleBody3D",
"VehicleWheel3D",
"VFlowContainer",
"VideoStreamPlayer",
"VideoStream",
"ViewportTexture",
"Viewport",
"VisibleOnScreenEnabler2D",
"VisibleOnScreenEnabler3D",
"VisibleOnScreenNotifier2D",
"VisibleOnScreenNotifier3D",
"VisualInstance3D",
"VisualShaderNodeBillboard",
"VisualShaderNodeBooleanConstant",
"VisualShaderNodeBooleanParameter",
"VisualShaderNodeClamp",
"VisualShaderNodeColorConstant",
"VisualShaderNodeColorFunc",
"VisualShaderNodeColorOp",
"VisualShaderNodeColorParameter",
"VisualShaderNodeComment",
"VisualShaderNodeCompare",
"VisualShaderNodeConstant",
"VisualShaderNodeCubemapParameter",
"VisualShaderNodeCubemap",
"VisualShaderNodeCurveTexture",
"VisualShaderNodeCurveXYZTexture",
"VisualShaderNodeCustom",
"VisualShaderNodeDerivativeFunc",
"VisualShaderNodeDeterminant",
"VisualShaderNodeDistanceFade",
"VisualShaderNodeDotProduct",
"VisualShaderNodeExpression",
"VisualShaderNodeFaceForward",
"VisualShaderNodeFloatConstant",
"VisualShaderNodeFloatFunc",
"VisualShaderNodeFloatOp",
"VisualShaderNodeFloatParameter",
"VisualShaderNodeFresnel",
"VisualShaderNodeGlobalExpression",
"VisualShaderNodeGroupBase",
"VisualShaderNodeIf",
"VisualShaderNodeInput",
"VisualShaderNodeIntConstant",
"VisualShaderNodeIntFunc",
"VisualShaderNodeIntOp",
"VisualShaderNodeIntParameter",
"VisualShaderNodeIs",
"VisualShaderNodeLinearSceneDepth",
"VisualShaderNodeMix",
"VisualShaderNodeMultiplyAdd",
"VisualShaderNodeOuterProduct",
"VisualShaderNodeOutput",
"VisualShaderNodeParameterRef",
"VisualShaderNodeParameter",
"VisualShaderNodeParticleAccelerator",
"VisualShaderNodeParticleBoxEmitter",
"VisualShaderNodeParticleConeVelocity",
"VisualShaderNodeParticleEmitter",
"VisualShaderNodeParticleEmit",
"VisualShaderNodeParticleMeshEmitter",
"VisualShaderNodeParticleMultiplyByAxisAngle",
"VisualShaderNodeParticleOutput",
"VisualShaderNodeParticleRandomness",
"VisualShaderNodeParticleRingEmitter",
"VisualShaderNodeParticleSphereEmitter",
"VisualShaderNodeProximityFade",
"VisualShaderNodeRandomRange",
"VisualShaderNodeRemap",
"VisualShaderNodeResizableBase",
"VisualShaderNodeSample3D",
"VisualShaderNodeScreenUVToSDF",
"VisualShaderNodeSDFRaymarch",
"VisualShaderNodeSDFToScreenUV",
"VisualShaderNodeSmoothStep",
"VisualShaderNodeStep",
"VisualShaderNodeSwitch",
"VisualShaderNodeTexture2DArrayParameter",
"VisualShaderNodeTexture2DArray",
"VisualShaderNodeTexture2DParameter",
"VisualShaderNodeTexture3DParameter",
"VisualShaderNodeTexture3D",
"VisualShaderNodeTextureParameterTriplanar",
"VisualShaderNodeTextureParameter",
"VisualShaderNodeTextureSDFNormal",
"VisualShaderNodeTextureSDF",
"VisualShaderNodeTexture",
"VisualShaderNodeTransformCompose",
"VisualShaderNodeTransformConstant",
"VisualShaderNodeTransformDecompose",
"VisualShaderNodeTransformFunc",
"VisualShaderNodeTransformOp",
"VisualShaderNodeTransformParameter",
"VisualShaderNodeTransformVecMult",
"VisualShaderNodeUVFunc",
"VisualShaderNodeUVPolarCoord",
"VisualShaderNodeVaryingGetter",
"VisualShaderNodeVaryingSetter",
"VisualShaderNodeVarying",
"VisualShaderNodeVec2Constant",
"VisualShaderNodeVec2Parameter",
"VisualShaderNodeVec3Constant",
"VisualShaderNodeVec3Parameter",
"VisualShaderNodeVec4Constant",
"VisualShaderNodeVec4Parameter",
"VisualShaderNodeVectorBase",
"VisualShaderNodeVectorCompose",
"VisualShaderNodeVectorDecompose",
"VisualShaderNodeVectorDistance",
"VisualShaderNodeVectorFunc",
"VisualShaderNodeVectorLen",
"VisualShaderNodeVectorOp",
"VisualShaderNodeVectorRefract",
"VisualShaderNode",
"VisualShader",
"VoxelGIData",
"VoxelGI",
"VScrollBar",
"VSeparator",
"VSlider",
"VSplitContainer",
"WeakRef",
"Window",
"WorkerThreadPool",
"World2D",
"World3D",
"WorldBoundaryShape2D",
"WorldBoundaryShape3D",
"WorldEnvironment",
"X509Certificate",
"XMLParser",
"XRAnchor3D",
"XRCamera3D",
"XRController3D",
"XRInterfaceExtension",
"XRInterface",
"XRNode3D",
"XROrigin3D",
"XRPose",
"XRPositionalTracker",
"XRServer"
);
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy