buuunch of stuff
parent
92e1f553ec
commit
632c953e42
|
@ -2,3 +2,4 @@ include/godot_cpp/*.hpp
|
||||||
include/godot_cpp/impl/
|
include/godot_cpp/impl/
|
||||||
include/godot.h
|
include/godot.h
|
||||||
include/godot
|
include/godot
|
||||||
|
*.os
|
||||||
|
|
|
@ -68,6 +68,8 @@ fn main() {
|
||||||
|
|
||||||
let json: Vec<GodotClass> = serde_json::from_str::<Vec<GodotClass>>(&file_contents).unwrap();
|
let json: Vec<GodotClass> = serde_json::from_str::<Vec<GodotClass>>(&file_contents).unwrap();
|
||||||
|
|
||||||
|
let mut icalls: HashSet<(String, Vec<String>)> = HashSet::new();
|
||||||
|
|
||||||
for class in json {
|
for class in json {
|
||||||
let used_classes = get_used_classes(&class);
|
let used_classes = get_used_classes(&class);
|
||||||
|
|
||||||
|
@ -76,8 +78,17 @@ fn main() {
|
||||||
header.write_all(generate_class_header(&used_classes, &class).as_bytes());
|
header.write_all(generate_class_header(&used_classes, &class).as_bytes());
|
||||||
|
|
||||||
let mut implementation = File::create((base_dir.to_string() + "impl/" + strip_name(&class.name) + ".cpp").as_str()).unwrap();
|
let mut implementation = File::create((base_dir.to_string() + "impl/" + strip_name(&class.name) + ".cpp").as_str()).unwrap();
|
||||||
implementation.write_all(generate_class_implementation(&used_classes, &class).as_bytes());
|
implementation.write_all(generate_class_implementation(&mut icalls, &used_classes, &class).as_bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// generate icall files
|
||||||
|
let mut icall_header = File::create((base_dir.to_string() + "__icalls.hpp").as_str()).unwrap();
|
||||||
|
|
||||||
|
icall_header.write_all(generate_icall_header(&icalls).as_bytes());
|
||||||
|
|
||||||
|
let mut icall_implmentation = File::create((base_dir.to_string() + "impl/__icalls.cpp").as_str()).unwrap();
|
||||||
|
|
||||||
|
icall_implmentation.write_all(generate_icall_implementation(&icalls).as_bytes());
|
||||||
}
|
}
|
||||||
|
|
||||||
fn get_used_classes(class: &GodotClass) -> HashSet<&String> {
|
fn get_used_classes(class: &GodotClass) -> HashSet<&String> {
|
||||||
|
@ -110,12 +121,12 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
contents = contents + "#define ";
|
contents = contents + "#define ";
|
||||||
contents = contents + strip_name(&class.name).to_string().to_uppercase().as_str() + "_H\n\n";
|
contents = contents + strip_name(&class.name).to_string().to_uppercase().as_str() + "_H\n\n";
|
||||||
|
|
||||||
contents = contents + "\n#include \"core/CoreTypes.h\"\n";
|
contents = contents + "\n#include \"core/CoreTypes.hpp\"\n";
|
||||||
|
|
||||||
contents = contents + "\n#include <godot.h>\n\n\n";
|
contents = contents + "\n#include <godot.h>\n\n\n";
|
||||||
|
|
||||||
if class.base_class != "" {
|
if class.base_class != "" {
|
||||||
contents = contents + "\n#include \"" + strip_name(&class.base_class) + ".h\"\n\n\n";
|
contents = contents + "\n#include \"" + strip_name(&class.base_class) + ".hpp\"\n\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "namespace godot {\n\n";
|
contents = contents + "namespace godot {\n\n";
|
||||||
|
@ -138,10 +149,6 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
|
|
||||||
if class.singleton {
|
|
||||||
contents = contents + "\n\nstatic godot_object *" + core_obj_name.as_str() + ";\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
contents = contents + "class " + strip_name(&class.name);
|
contents = contents + "class " + strip_name(&class.name);
|
||||||
|
|
||||||
if class.base_class != "" {
|
if class.base_class != "" {
|
||||||
|
@ -178,8 +185,8 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
if class.instanciable {
|
if class.instanciable {
|
||||||
contents = contents + "\tstatic " + strip_name(&class.name) + " _new();\n";
|
contents = contents + "\tstatic " + strip_name(&class.name) + "& __new();\n";
|
||||||
contents = contents + "\tvoid _destroy();\n\n";
|
contents = contents + "\tvoid __destroy();\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
for (name, value) in &class.constants {
|
for (name, value) in &class.constants {
|
||||||
|
@ -189,7 +196,7 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
contents += "\n\n";
|
contents += "\n\n";
|
||||||
|
|
||||||
for method in &class.methods {
|
for method in &class.methods {
|
||||||
contents = contents + "\t" + (if class.singleton { "static " } else if method.is_virtual { "virtual " } else { "" }) + strip_name(&method.return_type) + (if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { " &" } else { " " }) + method.name.as_str() + "(";
|
contents = contents + "\t" + (if class.singleton { "static " } else if method.is_virtual { "virtual " } else { "" }) + strip_name(&method.return_type) + (if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { " &" } else { " " }) + escape_cpp(&method.name) + "(";
|
||||||
|
|
||||||
for (i, argument) in (&method.arguments).iter().enumerate() {
|
for (i, argument) in (&method.arguments).iter().enumerate() {
|
||||||
if !is_primitive(&argument._type) {
|
if !is_primitive(&argument._type) {
|
||||||
|
@ -204,11 +211,21 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + ")" + if method.is_const { " const" } else { "" } + ";\n";
|
contents = contents + ")" + if method.is_const && !class.singleton { " const" } else { "" } + ";\n";
|
||||||
|
// contents = contents + ")" + if method.is_const { " const" } else { "" } + ";\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "};\n\n";
|
contents = contents + "};\n\n";
|
||||||
|
|
||||||
|
if class.base_class == "" {
|
||||||
|
// Object
|
||||||
|
contents = contents + "\ninline Variant::operator Object() const\n{\n\n";
|
||||||
|
|
||||||
|
contents = contents + "\treturn Object(godot_variant_as_object(&_godot_variant));\n\n";
|
||||||
|
|
||||||
|
contents = contents + "\n}\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
contents = contents + "}\n";
|
contents = contents + "}\n";
|
||||||
|
|
||||||
contents = contents + "#endif\n";
|
contents = contents + "#endif\n";
|
||||||
|
@ -217,22 +234,26 @@ fn generate_class_header(used_classes: &HashSet<&String>, class: &GodotClass) ->
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn generate_class_implementation(used_classes: &HashSet<&String>, class: &GodotClass) -> String {
|
fn generate_class_implementation(icalls: &mut HashSet<(String, Vec<String>)>, used_classes: &HashSet<&String>, class: &GodotClass) -> String {
|
||||||
let mut contents = String::new();
|
let mut contents = String::new();
|
||||||
|
|
||||||
contents = contents + "#include \"" + strip_name(&class.name) + ".hpp" + "\"\n";
|
contents = contents + "#include \"" + strip_name(&class.name) + ".hpp" + "\"\n";
|
||||||
|
|
||||||
/* contents = contents + "\n#include \"core/CoreTypes.h\"\n";
|
contents = contents + "\n#include \"core/CoreTypes.hpp\"\n";
|
||||||
|
|
||||||
contents = contents + "\n#include <godot.h>\n\n\n";
|
if class.instanciable {
|
||||||
|
contents = contents + "#include \"ClassDB.hpp\"\n";
|
||||||
if class.base_class != "" {
|
|
||||||
contents = contents + "\n#include \"" + strip_name(&class.base_class) + ".h\"\n\n\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "namespace godot {\n\n";
|
contents = contents + "\n#include \"__icalls.hpp\"\n\n\n";
|
||||||
|
|
||||||
// contents += forward_declares;
|
for used_class in used_classes {
|
||||||
|
contents = contents + "#include \"" + strip_name(used_class) + ".hpp\"\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = contents + "\n\n";
|
||||||
|
|
||||||
|
contents = contents + "namespace godot {\n\n";
|
||||||
|
|
||||||
let core_obj_name = {
|
let core_obj_name = {
|
||||||
let mut name = String::new();
|
let mut name = String::new();
|
||||||
|
@ -244,65 +265,46 @@ fn generate_class_implementation(used_classes: &HashSet<&String>, class: &GodotC
|
||||||
name
|
name
|
||||||
};
|
};
|
||||||
|
|
||||||
if class.singleton {
|
contents = contents + "\n\n\n";
|
||||||
contents = contents + "\n\nstatic godot_object *" + core_obj_name.as_str() + ";\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
contents = contents + "\n\n\nclass " + strip_name(&class.name);
|
|
||||||
|
|
||||||
if class.base_class != "" {
|
|
||||||
contents = contents + " : public " + strip_name(&class.base_class);
|
|
||||||
}
|
|
||||||
|
|
||||||
contents = contents + " {\n";
|
|
||||||
|
|
||||||
if class.base_class == "" {
|
|
||||||
contents = contents + "protected:\n\tgodot_object *__core_object = 0;\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
if class.singleton {
|
if class.singleton {
|
||||||
contents = contents + "private:\n";
|
contents = contents + "static godot_object *" + core_obj_name.as_str() + ";\n\n\n\n\n";
|
||||||
contents = contents + "\tstatic void ___singleton_init() { "
|
}
|
||||||
+ core_obj_name.as_str() + " = godot_global_get_singleton(\"" + strip_name(&class.name) + "\"); }\n\n";
|
|
||||||
|
|
||||||
|
if class.singleton {
|
||||||
|
contents = contents + "void " + strip_name(&class.name) + "::___singleton_init()\n{\n\t"
|
||||||
|
+ core_obj_name.as_str() + " = godot_global_get_singleton(\"" + strip_name(&class.name) + "\");\n}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "public:\n\n";
|
|
||||||
|
|
||||||
// default constructor
|
// default constructor
|
||||||
|
|
||||||
{
|
{
|
||||||
contents = contents + "\t" + strip_name(&class.name) + "() {\n";
|
contents = contents + "" + strip_name(&class.name) + "::" + strip_name(&class.name) + "()\n{\n";
|
||||||
contents = contents + "\t\t\n";
|
contents = contents + "\t\n";
|
||||||
contents = contents + "\t}\n\n";
|
contents = contents + "}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// pointer constructor
|
// pointer constructor
|
||||||
{
|
{
|
||||||
contents = contents + "\t" + strip_name(&class.name) + "(godot_object *ptr) {\n";
|
contents = contents + "" + strip_name(&class.name) + "::" + strip_name(&class.name) + "(godot_object *ptr)\n{\n";
|
||||||
contents = contents + "\t\t__core_object = ptr;\n";
|
contents = contents + "\t__core_object = ptr;\n";
|
||||||
contents = contents + "\t}\n\n\n";
|
contents = contents + "}\n\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if class.base_class != "" {
|
if class.base_class != "" {
|
||||||
contents = contents + "\tvoid _init() {\n";
|
contents = contents + "void " + strip_name(&class.name) + "::" + "_init()\n{\n";
|
||||||
contents = contents + "\t\t\n";
|
contents = contents + "\t\n";
|
||||||
contents = contents + "\t}\n\n";
|
contents = contents + "}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if class.instanciable {
|
|
||||||
contents = contents + "\tstatic " + strip_name(&class.name) + "& _new();\n";
|
|
||||||
contents = contents + "\tvoid _destroy();\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
for (name, value) in &class.constants {
|
|
||||||
contents = contents + "\tconst static int " + name.as_str() + " = " + value.as_i64().unwrap().to_string().as_str() + ";\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
contents += "\n\n";
|
contents += "\n\n";
|
||||||
|
|
||||||
for method in &class.methods {
|
for method in &class.methods {
|
||||||
contents = contents + "\t" + (if class.singleton { "static " } else { "" }) + strip_name(&method.return_type) + (if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { " &" } else { " " }) + method.name.as_str() + "(";
|
contents = contents + strip_name(&method.return_type) + (if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { " &" } else { " " }) + strip_name(&class.name) + "::" + escape_cpp(&method.name) + "(";
|
||||||
|
|
||||||
for (i, argument) in (&method.arguments).iter().enumerate() {
|
for (i, argument) in (&method.arguments).iter().enumerate() {
|
||||||
if !is_primitive(&argument._type) {
|
if !is_primitive(&argument._type) {
|
||||||
|
@ -317,94 +319,269 @@ fn generate_class_implementation(used_classes: &HashSet<&String>, class: &GodotC
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + ") {\n";
|
contents = contents + ")" + if method.is_const && !class.singleton { " const" } else { "" } + "\n{\n";
|
||||||
|
|
||||||
|
|
||||||
if class.singleton {
|
if class.singleton {
|
||||||
contents = contents + "\t\tif (" + core_obj_name.as_str() + " == 0) {\n";
|
contents = contents + "\tif (" + core_obj_name.as_str() + " == 0) {\n";
|
||||||
contents = contents + "\t\t\t___singleton_init();\n";
|
contents = contents + "\t\t___singleton_init();\n";
|
||||||
contents = contents + "\t\t}\n\n";
|
contents = contents + "\t}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "\t\tstatic godot_method_bind *mb = NULL;\n"
|
contents = contents + "\tstatic godot_method_bind *mb = NULL;\n"
|
||||||
+ "\t\tif (mb == NULL) {\n"
|
+ "\tif (mb == NULL) {\n"
|
||||||
+ "\t\t\tmb = godot_method_bind_get_method(\"" + class.name.as_str() + "\", \"" + method.name.as_str() + "\");\n"
|
+ "\t\tmb = godot_method_bind_get_method(\"" + class.name.as_str() + "\", \"" + method.name.as_str() + "\");\n"
|
||||||
+ "\t\t}\n";
|
+ "\t}\n\t";
|
||||||
|
|
||||||
|
|
||||||
if method.return_type != "void" {
|
if method.return_type != "void" {
|
||||||
// contents = contents + "\t\t" + strip_name(&method.return_type) + (if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { "*" } else { "" }) + " ret;" + "\n";
|
contents = contents + "return ";
|
||||||
contents = contents + "\t\t" + if !is_core_type(&method.return_type) && !is_primitive(&method.return_type) { "godot_object*" } else { strip_name(&method.return_type) } + " ret;\n";
|
if !is_primitive(&method.return_type) && !is_core_type(&method.return_type) {
|
||||||
}
|
contents = contents + "reinterpret_cast<" + strip_name(&method.return_type) + "&>(";
|
||||||
|
|
||||||
contents = contents + "\t\tconst void *args[] = {\n";
|
|
||||||
|
|
||||||
for argument in &method.arguments {
|
|
||||||
contents = contents + "\t\t\t";
|
|
||||||
if is_primitive(&argument._type) {
|
|
||||||
contents = contents + "&" + argument.name.as_str();
|
|
||||||
} else if is_core_type(&argument._type) {
|
|
||||||
contents = contents + "(void *) &" + escape_cpp(&argument.name);
|
|
||||||
} else {
|
|
||||||
contents = contents + "(void *) &" + escape_cpp(&argument.name);
|
|
||||||
}
|
}
|
||||||
contents = contents + ",\n";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "\t\t};\n";
|
let mut args = Vec::new();
|
||||||
|
|
||||||
contents = contents + "\t\tgodot_method_bind_ptrcall(mb, " + core_obj_name.as_str() + ", args, " + if method.return_type == "void" { "NULL" } else { "&ret" } + ");\n";
|
fn get_icall_type_name(t: &String) -> String {
|
||||||
|
if is_core_type(t) || is_primitive(t) {
|
||||||
|
t.clone()
|
||||||
|
} else {
|
||||||
|
"Object".to_string()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
for arg in &method.arguments {
|
||||||
|
args.push(get_icall_type_name(&arg._type));
|
||||||
|
}
|
||||||
|
|
||||||
|
let icallsig = (get_icall_type_name(&method.return_type), args);
|
||||||
|
|
||||||
|
let name = get_icall_name(&icallsig);
|
||||||
|
|
||||||
|
icalls.insert(icallsig);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
contents = contents + name.as_str() + "(mb, " + core_obj_name.as_str();
|
||||||
|
|
||||||
|
for arg in &method.arguments {
|
||||||
|
contents = contents + ", " + escape_cpp(&arg.name);
|
||||||
|
}
|
||||||
|
|
||||||
if !is_primitive(&method.return_type) && !is_core_type(&method.return_type) {
|
if !is_primitive(&method.return_type) && !is_core_type(&method.return_type) {
|
||||||
contents = contents + "\t\treturn reinterpret_cast<" + strip_name(&method.return_type) + "&>(ret);\n";
|
contents = contents + ")";
|
||||||
} else if method.return_type != "void" {
|
|
||||||
contents = contents + "\t\treturn ret;\n";
|
|
||||||
}
|
}
|
||||||
|
contents = contents + ");\n";
|
||||||
|
|
||||||
contents = contents + "\t}\n\n";
|
contents = contents + "}\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
contents = contents + "};\n\n";
|
|
||||||
|
|
||||||
contents = contents + "}\n";
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
if class.instanciable {
|
if class.instanciable {
|
||||||
|
|
||||||
contents = contents + "#include \"ClassDB.h\"\n";
|
contents = contents + strip_name(&class.name) + "& " + strip_name(&class.name) + "::__new() {\n";
|
||||||
|
|
||||||
contents = contents + "namespace godot {\n\n";
|
|
||||||
|
|
||||||
contents = contents + "" + strip_name(&class.name) + "& " + strip_name(&class.name) + "::_new() {\n";
|
|
||||||
contents = contents + "\tObject ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
|
contents = contents + "\tObject ptr = ClassDB::instance(\"" + class.name.as_str() + "\");\n";
|
||||||
contents = contents + "\treturn reinterpret_cast<" + strip_name(&class.name) + "&>(ptr);";
|
contents = contents + "\treturn reinterpret_cast<" + strip_name(&class.name) + "&>(ptr);\n";
|
||||||
contents = contents + "}\n\n";
|
contents = contents + "}\n\n";
|
||||||
|
|
||||||
contents = contents + "void " + strip_name(&class.name) + "::_destroy() {\n";
|
contents = contents + "void " + strip_name(&class.name) + "::__destroy() {\n";
|
||||||
contents = contents + "\tgodot_object_destroy(__core_object);\n";
|
contents = contents + "\tgodot_object_destroy(__core_object);\n";
|
||||||
contents = contents + "}\n\n\n";
|
contents = contents + "}\n\n\n";
|
||||||
|
|
||||||
if class.base_class == "" {
|
/* if class.base_class == "" {
|
||||||
// Object
|
// Object
|
||||||
contents = contents + "Variant::operator Object()const {\n\n";
|
contents = contents + "Variant::operator Object()const {\n\n";
|
||||||
|
|
||||||
contents = contents + "\treturn Object(godot_variant_as_object(&_godot_variant));\n\n";
|
contents = contents + "\treturn Object(godot_variant_as_object(&_godot_variant));\n\n";
|
||||||
|
|
||||||
contents = contents + "}\n\n";
|
contents = contents + "}\n\n";
|
||||||
}
|
} */
|
||||||
|
}
|
||||||
|
|
||||||
contents = contents + "}\n";
|
contents = contents + "}\n";
|
||||||
|
|
||||||
|
contents
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_icall_name(sig: &(String, Vec<String>)) -> String {
|
||||||
|
|
||||||
|
let &(ref ret, ref args) = sig;
|
||||||
|
|
||||||
|
let mut name = String::new();
|
||||||
|
|
||||||
|
name = name + "___godot_icall_";
|
||||||
|
|
||||||
|
name = name + strip_name(&ret);
|
||||||
|
|
||||||
|
for arg in args {
|
||||||
|
name = name + "_" + strip_name(&arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
name
|
||||||
|
}
|
||||||
|
|
||||||
|
fn get_icall_name_ref(sig: (&String, &Vec<String>)) -> String {
|
||||||
|
|
||||||
|
let (ref ret, args) = sig;
|
||||||
|
|
||||||
|
let mut name = String::new();
|
||||||
|
|
||||||
|
name = name + "___godot_icall_";
|
||||||
|
|
||||||
|
name = name + strip_name(&ret);
|
||||||
|
|
||||||
|
for arg in args {
|
||||||
|
name = name + "_" + strip_name(&arg);
|
||||||
|
}
|
||||||
|
|
||||||
|
name
|
||||||
|
}
|
||||||
|
|
||||||
|
fn generate_icall_header(icalls: &HashSet<(String, Vec<String>)>) -> String {
|
||||||
|
|
||||||
|
fn return_type(t: &String) -> &str {
|
||||||
|
if is_primitive(t) || is_core_type(t) {
|
||||||
|
t.as_str()
|
||||||
|
} else {
|
||||||
|
"Object& "
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
let mut contents = String::new();
|
||||||
|
|
||||||
|
contents = contents + "#ifndef __ICALLS_H\n";
|
||||||
|
contents = contents + "#define __ICALLS_H\n\n\n";
|
||||||
|
|
||||||
|
contents = contents + "#include <godot.h>\n\n\n";
|
||||||
|
|
||||||
|
contents = contents + "#include \"core/CoreTypes.hpp\"\n";
|
||||||
|
contents = contents + "#include \"Object.hpp\"\n\n\n";
|
||||||
|
|
||||||
|
contents = contents + "using namespace godot;\n\n\n";
|
||||||
|
|
||||||
|
for &(ref ret, ref args) in icalls {
|
||||||
|
contents = contents + return_type(ret) + " " + get_icall_name_ref((ret, args)).as_str() + "(godot_method_bind *mb, godot_object *inst";
|
||||||
|
for arg in args {
|
||||||
|
contents = contents + ", ";
|
||||||
|
if !is_primitive(&arg) {
|
||||||
|
contents = contents + "const " + arg.as_str() + "&";
|
||||||
|
} else {
|
||||||
|
contents = contents + "const " + arg.as_str() + "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
contents = contents + ");\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = contents + "#endif";
|
||||||
|
|
||||||
|
contents
|
||||||
|
}
|
||||||
|
|
||||||
|
fn generate_icall_implementation(icalls: &HashSet<(String, Vec<String>)>) -> String {
|
||||||
|
|
||||||
|
fn return_type(t: &String) -> &str {
|
||||||
|
if is_primitive(t) || is_core_type(t) {
|
||||||
|
t.as_str()
|
||||||
|
} else {
|
||||||
|
"Object& "
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let mut contents = String::new();
|
||||||
|
|
||||||
|
contents = contents + "#include \"__icalls.hpp\"\n";
|
||||||
|
|
||||||
|
contents = contents + "#include <godot.h>\n\n\n";
|
||||||
|
|
||||||
|
contents = contents + "#include \"core/CoreTypes.hpp\"\n";
|
||||||
|
contents = contents + "#include \"Object.hpp\"\n\n\n";
|
||||||
|
|
||||||
|
contents = contents + "using namespace godot;\n\n\n";
|
||||||
|
|
||||||
|
for &(ref ret, ref args) in icalls {
|
||||||
|
contents = contents + return_type(ret) + " " + get_icall_name_ref((ret, args)).as_str() + "(godot_method_bind *mb, godot_object *inst";
|
||||||
|
let mut i = 0;
|
||||||
|
for arg in args {
|
||||||
|
contents = contents + ", ";
|
||||||
|
if !is_primitive(&arg) {
|
||||||
|
contents = contents + "const " + arg.as_str() + "&";
|
||||||
|
} else {
|
||||||
|
contents = contents + "const " + arg.as_str() + "";
|
||||||
|
}
|
||||||
|
contents = contents + " arg" + i.to_string().as_str();
|
||||||
|
i = i + 1;
|
||||||
|
}
|
||||||
|
contents = contents + ")\n";
|
||||||
|
|
||||||
|
contents = contents + "{\n";
|
||||||
|
|
||||||
|
if ret != "void" {
|
||||||
|
contents = contents + "\t" + if !is_core_type(ret) && !is_primitive(ret) { "godot_object*" } else { strip_name(ret) } + " ret;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = contents + "\tconst void *args[] = {\n";
|
||||||
|
|
||||||
|
let mut j = 0;
|
||||||
|
for arg in args {
|
||||||
|
contents = contents + "\t\t";
|
||||||
|
if is_primitive(arg) {
|
||||||
|
contents = contents + "&arg" + j.to_string().as_str();
|
||||||
|
} else if is_core_type(arg) {
|
||||||
|
contents = contents + "(void *) &arg" + j.to_string().as_str();
|
||||||
|
} else {
|
||||||
|
contents = contents + "(void *) &arg" + j.to_string().as_str();
|
||||||
|
}
|
||||||
|
contents = contents + ",\n";
|
||||||
|
j = j + 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = contents + "\t};\n";
|
||||||
|
|
||||||
|
contents = contents + "\tgodot_method_bind_ptrcall(mb, inst, args, " + if ret == "void" { "NULL" } else { "&ret" } + ");\n";
|
||||||
|
|
||||||
|
if !is_primitive(ret) && !is_core_type(ret) {
|
||||||
|
contents = contents + "\treturn reinterpret_cast<Object&>(ret);\n";
|
||||||
|
} else if ret != "void" {
|
||||||
|
contents = contents + "\treturn ret;\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
contents = contents + "}\n\n";
|
||||||
|
}
|
||||||
|
|
||||||
|
// contents = contents + "#endif";
|
||||||
|
|
||||||
contents = contents + "#endif\n";
|
|
||||||
*/
|
|
||||||
contents
|
contents
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
fn is_core_type(name: &String) -> bool {
|
fn is_core_type(name: &String) -> bool {
|
||||||
let core_types = vec!["Array", "PoolStringArray", "Vector2", "Vector3", "String", "Variant"];
|
let core_types = vec!["Array",
|
||||||
|
"Basis",
|
||||||
|
"Color",
|
||||||
|
"Dictionary",
|
||||||
|
"Error",
|
||||||
|
"Image",
|
||||||
|
"InputEvent",
|
||||||
|
"NodePath",
|
||||||
|
"Plane",
|
||||||
|
"PoolByteArray",
|
||||||
|
"PoolIntArray",
|
||||||
|
"PoolRealArray",
|
||||||
|
"PoolStringArray",
|
||||||
|
"PoolVector2Array",
|
||||||
|
"PoolVector3Array",
|
||||||
|
"PoolColorArray",
|
||||||
|
"Quat",
|
||||||
|
"Rect2",
|
||||||
|
"Rect3",
|
||||||
|
"RID",
|
||||||
|
"String",
|
||||||
|
"Transform",
|
||||||
|
"Transform2D",
|
||||||
|
"Variant",
|
||||||
|
"Vector2",
|
||||||
|
"Vector3"];
|
||||||
core_types.contains(&name.as_str())
|
core_types.contains(&name.as_str())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,6 +595,14 @@ fn escape_cpp(name: &String) -> &str {
|
||||||
"class" => "_class",
|
"class" => "_class",
|
||||||
"char" => "_char",
|
"char" => "_char",
|
||||||
"short" => "_short",
|
"short" => "_short",
|
||||||
|
"bool" => "_bool",
|
||||||
|
"int" => "_int",
|
||||||
|
"default" => "_default",
|
||||||
|
"case" => "_case",
|
||||||
|
"switch" => "_switch",
|
||||||
|
"export" => "_export",
|
||||||
|
"template" => "_template",
|
||||||
|
"new" => "new_",
|
||||||
x => x
|
x => x
|
||||||
}
|
}
|
||||||
}
|
}
|
|
@ -1,31 +1,51 @@
|
||||||
#!python
|
#!python
|
||||||
|
import os
|
||||||
|
|
||||||
env = Environment()
|
env = Environment()
|
||||||
env["CXX"] = "clang++"
|
env["CXX"] = "clang++"
|
||||||
env.Append(CCFLAGS = ['-g','-O3', '-std=c++14'])
|
|
||||||
env.Append(CPPPATH=['.', './godot'])
|
|
||||||
|
|
||||||
sources = [
|
target = ARGUMENTS.get("target", "core")
|
||||||
'godot_cpp/core/Array.cpp',
|
|
||||||
'godot_cpp/core/Basis.cpp',
|
|
||||||
'godot_cpp/core/Color.cpp',
|
|
||||||
'godot_cpp/core/Dictionary.cpp',
|
|
||||||
'godot_cpp/core/Image.cpp',
|
|
||||||
'godot_cpp/core/InputEvent.cpp',
|
|
||||||
'godot_cpp/core/NodePath.cpp',
|
|
||||||
'godot_cpp/core/Plane.cpp',
|
|
||||||
'godot_cpp/core/PoolArrays.cpp',
|
|
||||||
'godot_cpp/core/Quat.cpp',
|
|
||||||
'godot_cpp/core/Rect2.cpp',
|
|
||||||
'godot_cpp/core/Rect3.cpp',
|
|
||||||
'godot_cpp/core/RID.cpp',
|
|
||||||
'godot_cpp/core/String.cpp',
|
|
||||||
'godot_cpp/core/Transform.cpp',
|
|
||||||
'godot_cpp/core/Transform2D.cpp',
|
|
||||||
'godot_cpp/core/Variant.cpp',
|
|
||||||
'godot_cpp/core/Vector2.cpp',
|
|
||||||
'godot_cpp/core/Vector3.cpp'
|
|
||||||
]
|
|
||||||
|
|
||||||
library = env.SharedLibrary(target='godot_cpp_core', source=sources)
|
if (target == "core"):
|
||||||
Default(library)
|
env.Append(CCFLAGS = ['-g','-O3', '-std=c++14'])
|
||||||
|
env.Append(CPPPATH=['.', './godot'])
|
||||||
|
|
||||||
|
sources = [
|
||||||
|
'godot_cpp/core/Array.cpp',
|
||||||
|
'godot_cpp/core/Basis.cpp',
|
||||||
|
'godot_cpp/core/Color.cpp',
|
||||||
|
'godot_cpp/core/Dictionary.cpp',
|
||||||
|
'godot_cpp/core/Image.cpp',
|
||||||
|
'godot_cpp/core/InputEvent.cpp',
|
||||||
|
'godot_cpp/core/NodePath.cpp',
|
||||||
|
'godot_cpp/core/Plane.cpp',
|
||||||
|
'godot_cpp/core/PoolArrays.cpp',
|
||||||
|
'godot_cpp/core/Quat.cpp',
|
||||||
|
'godot_cpp/core/Rect2.cpp',
|
||||||
|
'godot_cpp/core/Rect3.cpp',
|
||||||
|
'godot_cpp/core/RID.cpp',
|
||||||
|
'godot_cpp/core/String.cpp',
|
||||||
|
'godot_cpp/core/Transform.cpp',
|
||||||
|
'godot_cpp/core/Transform2D.cpp',
|
||||||
|
'godot_cpp/core/Variant.cpp',
|
||||||
|
'godot_cpp/core/Vector2.cpp',
|
||||||
|
'godot_cpp/core/Vector3.cpp'
|
||||||
|
]
|
||||||
|
|
||||||
|
library = env.SharedLibrary(target='godot_cpp_core', source=sources)
|
||||||
|
Default(library)
|
||||||
|
|
||||||
|
elif target == "binding":
|
||||||
|
env.Append(CCFLAGS = ['-Wno-writable-strings'])
|
||||||
|
env.Append(CCFLAGS = ['-g','-O3', '-std=c++14'])
|
||||||
|
env.Append(CPPPATH=['.', './godot', './godot_cpp'])
|
||||||
|
|
||||||
|
env.Append(RPATH=['.'])
|
||||||
|
env.Append(LINKFLAGS=['-Rgodot_cpp_core'])
|
||||||
|
|
||||||
|
|
||||||
|
sources = [os.path.join("godot_cpp/impl/", f) for f in os.listdir("godot_cpp/impl/") if f.endswith('.cpp')]
|
||||||
|
|
||||||
|
library = env.SharedLibrary(target='godot_cpp_bindings', source=sources)
|
||||||
|
Default(library)
|
||||||
|
|
||||||
|
|
|
@ -1,267 +0,0 @@
|
||||||
#ifndef GODOT_H
|
|
||||||
#define GODOT_H
|
|
||||||
|
|
||||||
#include <cstdlib>
|
|
||||||
|
|
||||||
#include <godot.h>
|
|
||||||
|
|
||||||
|
|
||||||
#include <godot_cpp/core/CoreTypes.h>
|
|
||||||
#include <godot_cpp/core/Variant.h>
|
|
||||||
|
|
||||||
namespace godot {
|
|
||||||
|
|
||||||
|
|
||||||
#define GODOT_CLASS(Name, Base) \
|
|
||||||
public: static char *___get_type_name() { return (char *) #Name; } \
|
|
||||||
static char *___get_base_type_name() { return (char *) #Base; } \
|
|
||||||
Name(godot_object *o) { __core_object = o; } \
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<class A, class B>
|
|
||||||
A object_cast(B b)
|
|
||||||
{
|
|
||||||
A *a = (A*) &b;
|
|
||||||
return *a;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// instance and destroy funcs
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
void *_godot_class_instance_func(godot_object *p)
|
|
||||||
{
|
|
||||||
T *d = new T(p);
|
|
||||||
d->_init();
|
|
||||||
return d;
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
void _godot_class_destroy_func(godot_object *p, void *data)
|
|
||||||
{
|
|
||||||
T *d = (T *) data;
|
|
||||||
delete d;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<class T>
|
|
||||||
void register_class()
|
|
||||||
{
|
|
||||||
godot_script_register(T::___get_type_name(), T::___get_base_type_name(), _godot_class_instance_func<T>, _godot_class_destroy_func<T>);
|
|
||||||
T::_register_methods();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// wrapped methods
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, class A3, class A4, R (T::*p)(A0, A1, A2, A3, A4)>
|
|
||||||
struct WrappedMethod5 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
*v = (obj->*p)(*arg[0], *arg[1], *arg[2], *arg[3], *arg[4]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class A0, class A1, class A2, class A3, class A4, void (T::*p)(A0, A1, A2, A3, A4)>
|
|
||||||
struct WrappedMethod5<T, void, A0, A1, A2, A3, A4, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
(obj->*p)(*arg[0], *arg[1], *arg[2], *arg[3], *arg[4]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, class A3, R (T::*p)(A0, A1, A2, A3)>
|
|
||||||
struct WrappedMethod4 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
*v = (obj->*p)(*arg[0], *arg[1], *arg[2], *arg[3]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class A0, class A1, class A2, class A3, void (T::*p)(A0, A1, A2, A3)>
|
|
||||||
struct WrappedMethod4<T, void, A0, A1, A2, A3, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
(obj->*p)(*arg[0], *arg[1], *arg[2], *arg[3]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, R (T::*p)(A0, A1, A2)>
|
|
||||||
struct WrappedMethod3 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
*v = (obj->*p)(*arg[0], *arg[1], *arg[2]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class A0, class A1, class A2, void (T::*p)(A0, A1, A2)>
|
|
||||||
struct WrappedMethod3<T, void, A0, A1, A2, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
(obj->*p)(*arg[0], *arg[1], *arg[2]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, R (T::*p)(A0, A1)>
|
|
||||||
struct WrappedMethod2 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
*v = (obj->*p)(*arg[0], *arg[1]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class A0, class A1, void (T::*p)(A0, A1)>
|
|
||||||
struct WrappedMethod2<T, void, A0, A1, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
(obj->*p)(*arg[0], *arg[1]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, class R, class I, R (T::*p)(I)>
|
|
||||||
struct WrappedMethod1 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
*v = (obj->*p)(*arg[0]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template <class T, class I, void (T::*p)(I)>
|
|
||||||
struct WrappedMethod1<T, void, I, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
godot::Variant **arg = (godot::Variant **) args;
|
|
||||||
(obj->*p)(*arg[0]);
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
template<class T, class R, R (T::*p)()>
|
|
||||||
struct WrappedMethod0 {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
godot::Variant *v = (godot::Variant *) &_variant;
|
|
||||||
T *obj = (T *) data;
|
|
||||||
*v = (obj->*p)();
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
template<class T, void (T::*p)()>
|
|
||||||
struct WrappedMethod0<T, void, p> {
|
|
||||||
static godot_variant wrapped_method(godot_object *_, void *data, int num_args, godot_variant **args)
|
|
||||||
{
|
|
||||||
godot_variant _variant;
|
|
||||||
godot_variant_new_nil(&_variant);
|
|
||||||
T *obj = (T *) data;
|
|
||||||
(obj->*p)();
|
|
||||||
return _variant;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// method registering
|
|
||||||
|
|
||||||
|
|
||||||
template<class T, class R, R (T::*p)()>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod0<T, R, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T, class R, class A0, R (T::*p)(A0)>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod1<T, R, A0, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, R (T::*p)(A0, A1)>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod2<T, R, A0, A1, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, R (T::*p)(A0, A1, A2)>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod3<T, R, A0, A1, A2, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, class A3, R (T::*p)(A0, A1, A2, A3)>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod4<T, R, A0, A1, A2, A3, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
template<class T, class R, class A0, class A1, class A2, class A3, class A4, R (T::*p)(A0, A1, A2, A3, A4)>
|
|
||||||
void register_method(char *name, godot_method_attributes attr = {}) {
|
|
||||||
godot_script_add_method(T::___get_type_name(), name, &attr, &WrappedMethod5<T, R, A0, A1, A2, A3, A4, p>::wrapped_method);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif // GODOT_H
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Array.h"
|
#include "Array.hpp"
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
||||||
#include <godot/godot_array.h>
|
#include <godot/godot_array.h>
|
||||||
|
|
||||||
#include "Variant.h"
|
#include "Variant.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <godot/godot_array.h>
|
#include <godot/godot_array.h>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
|
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include "Quat.h"
|
#include "Quat.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
@ -597,7 +597,7 @@ Basis::Basis(const Vector3& p_euler) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#include "Quat.h"
|
#include "Quat.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#ifndef BASIS_H
|
#ifndef BASIS_H
|
||||||
#define BASIS_H
|
#define BASIS_H
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
|
|
||||||
#include <godot/godot_color.h>
|
#include <godot/godot_color.h>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,27 +0,0 @@
|
||||||
#ifndef CORETYPES_H
|
|
||||||
#define CORETYPES_H
|
|
||||||
|
|
||||||
#include "Defs.h"
|
|
||||||
|
|
||||||
#include "Array.h"
|
|
||||||
#include "Basis.h"
|
|
||||||
#include "Color.h"
|
|
||||||
#include "Dictionary.h"
|
|
||||||
#include "Image.h"
|
|
||||||
#include "InputEvent.h"
|
|
||||||
#include "NodePath.h"
|
|
||||||
#include "Plane.h"
|
|
||||||
#include "PoolArrays.h"
|
|
||||||
#include "Quat.h"
|
|
||||||
#include "Rect2.h"
|
|
||||||
#include "Rect3.h"
|
|
||||||
#include "RID.h"
|
|
||||||
#include "String.h"
|
|
||||||
#include "Transform.h"
|
|
||||||
#include "Transform2D.h"
|
|
||||||
#include "Variant.h"
|
|
||||||
#include "Vector2.h"
|
|
||||||
#include "Vector3.h"
|
|
||||||
|
|
||||||
|
|
||||||
#endif // CORETYPES_H
|
|
|
@ -0,0 +1,27 @@
|
||||||
|
#ifndef CORETYPES_H
|
||||||
|
#define CORETYPES_H
|
||||||
|
|
||||||
|
#include "Defs.hpp"
|
||||||
|
|
||||||
|
#include "Array.hpp"
|
||||||
|
#include "Basis.hpp"
|
||||||
|
#include "Color.hpp"
|
||||||
|
#include "Dictionary.hpp"
|
||||||
|
#include "Image.hpp"
|
||||||
|
#include "InputEvent.hpp"
|
||||||
|
#include "NodePath.hpp"
|
||||||
|
#include "Plane.hpp"
|
||||||
|
#include "PoolArrays.hpp"
|
||||||
|
#include "Quat.hpp"
|
||||||
|
#include "Rect2.hpp"
|
||||||
|
#include "Rect3.hpp"
|
||||||
|
#include "RID.hpp"
|
||||||
|
#include "String.hpp"
|
||||||
|
#include "Transform.hpp"
|
||||||
|
#include "Transform2D.hp"
|
||||||
|
#include "Variant.hpp"
|
||||||
|
#include "Vector2.hpp"
|
||||||
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
|
|
||||||
|
#endif // CORETYPES_H
|
|
@ -1,8 +1,8 @@
|
||||||
#include "Dictionary.h"
|
#include "Dictionary.hpp"
|
||||||
|
|
||||||
#include "Variant.h"
|
#include "Variant.hpp"
|
||||||
|
|
||||||
#include "Array.h"
|
#include "Array.hpp"
|
||||||
|
|
||||||
#include <godot/godot_dictionary.h>
|
#include <godot/godot_dictionary.h>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#ifndef DICTIONARY_H
|
#ifndef DICTIONARY_H
|
||||||
#define DICTIONARY_H
|
#define DICTIONARY_H
|
||||||
|
|
||||||
#include "Variant.h"
|
#include "Variant.hpp"
|
||||||
|
|
||||||
#include "Array.h"
|
#include "Array.hpp"
|
||||||
|
|
||||||
#include <godot/godot_dictionary.h>
|
#include <godot/godot_dictionary.h>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#include "Image.h"
|
#include "Image.hpp"
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Rect2.h"
|
#include "Rect2.hpp"
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include "PoolArrays.h"
|
#include "PoolArrays.hpp"
|
||||||
|
|
||||||
#include <godot/godot_image.h>
|
#include <godot/godot_image.h>
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
#ifndef IMAGE_H
|
#ifndef IMAGE_H
|
||||||
#define IMAGE_H
|
#define IMAGE_H
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Rect2.h"
|
#include "Rect2.hpp"
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include <godot/godot_image.h>
|
#include <godot/godot_image.h>
|
||||||
|
|
|
@ -1,14 +1,14 @@
|
||||||
#include "InputEvent.h"
|
#include "InputEvent.hpp"
|
||||||
|
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Transform2D.h"
|
#include "Transform2D.hp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
#include <memory.h>
|
#include <memory.h>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "NodePath.h"
|
#include "NodePath.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include <godot/godot_node_path.h>
|
#include <godot/godot_node_path.h>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef NODEPATH_H
|
#ifndef NODEPATH_H
|
||||||
#define NODEPATH_H
|
#define NODEPATH_H
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include <godot/godot_node_path.h>
|
#include <godot/godot_node_path.h>
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef PLANE_H
|
#ifndef PLANE_H
|
||||||
#define PLANE_H
|
#define PLANE_H
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "PoolArrays.h"
|
#include "PoolArrays.hpp"
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include <godot/godot_pool_arrays.h>
|
#include <godot/godot_pool_arrays.h>
|
||||||
|
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
#ifndef POOLARRAYS_H
|
#ifndef POOLARRAYS_H
|
||||||
#define POOLARRAYS_H
|
#define POOLARRAYS_H
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include <godot/godot_pool_arrays.h>
|
#include <godot/godot_pool_arrays.h>
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#include "Quat.h"
|
#include "Quat.hpp"
|
||||||
|
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -3,7 +3,7 @@
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
// #include "Basis.h"
|
// #include "Basis.h"
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "RID.h"
|
#include "RID.hpp"
|
||||||
|
|
||||||
#include <godot/godot_rid.h>
|
#include <godot/godot_rid.h>
|
||||||
|
|
||||||
|
|
|
@ -11,6 +11,8 @@ class RID {
|
||||||
godot_rid _godot_rid;
|
godot_rid _godot_rid;
|
||||||
public:
|
public:
|
||||||
|
|
||||||
|
inline RID() {}
|
||||||
|
|
||||||
RID(Object *p);
|
RID(Object *p);
|
||||||
|
|
||||||
int32_t get_rid() const;
|
int32_t get_rid() const;
|
|
@ -1,12 +1,12 @@
|
||||||
#include "Rect2.h"
|
#include "Rect2.hpp"
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include "Transform2D.h"
|
#include "Transform2D.hp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef RECT2_H
|
#ifndef RECT2_H
|
||||||
#define RECT2_H
|
#define RECT2_H
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#include "Rect3.h"
|
#include "Rect3.hpp"
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#ifndef RECT3_H
|
#ifndef RECT3_H
|
||||||
#define RECT3_H
|
#define RECT3_H
|
||||||
|
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
|
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
#include "Transform.h"
|
#include "Transform.hpp"
|
||||||
|
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
|
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
#include "Rect3.h"
|
#include "Rect3.hpp"
|
||||||
|
|
||||||
#include "Quat.h"
|
#include "Quat.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#ifndef TRANSFORM_H
|
#ifndef TRANSFORM_H
|
||||||
#define TRANSFORM_H
|
#define TRANSFORM_H
|
||||||
|
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
|
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
#include "Rect3.h"
|
#include "Rect3.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Transform2D.h"
|
#include "Transform2D.hp"
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include "Rect2.h"
|
#include "Rect2.hpp"
|
||||||
|
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
#ifndef TRANSFORM2D_H
|
#ifndef TRANSFORM2D_H
|
||||||
#define TRANSFORM2D_H
|
#define TRANSFORM2D_H
|
||||||
|
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
|
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Variant.h"
|
#include "Variant.hpp"
|
||||||
|
|
||||||
#include <godot/godot_variant.h>
|
#include <godot/godot_variant.h>
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "CoreTypes.h"
|
#include "CoreTypes.hpp"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
|
@ -3,24 +3,24 @@
|
||||||
|
|
||||||
#include <godot/godot_variant.h>
|
#include <godot/godot_variant.h>
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
#include "Color.h"
|
#include "Color.hpp"
|
||||||
#include "Image.h"
|
#include "Image.hpp"
|
||||||
#include "InputEvent.h"
|
#include "InputEvent.hpp"
|
||||||
#include "NodePath.h"
|
#include "NodePath.hpp"
|
||||||
#include "Plane.h"
|
#include "Plane.hpp"
|
||||||
#include "PoolArrays.h"
|
#include "PoolArrays.hpp"
|
||||||
#include "Quat.h"
|
#include "Quat.hpp"
|
||||||
#include "Rect2.h"
|
#include "Rect2.hpp"
|
||||||
#include "Rect3.h"
|
#include "Rect3.hpp"
|
||||||
#include "RID.h"
|
#include "RID.hpp"
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
#include "Transform.h"
|
#include "Transform.hpp"
|
||||||
#include "Transform2D.h"
|
#include "Transform2D.hp"
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
#include "Vector2.h"
|
#include "Vector2.hpp"
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
#include <godot/godot_vector2.h>
|
#include <godot/godot_vector2.h>
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
|
|
||||||
#include <godot/godot_vector2.h>
|
#include <godot/godot_vector2.h>
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#include "Vector3.h"
|
#include "Vector3.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
|
|
||||||
|
|
||||||
#include "Basis.h"
|
#include "Basis.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
#ifndef VECTOR3_H
|
#ifndef VECTOR3_H
|
||||||
#define VECTOR3_H
|
#define VECTOR3_H
|
||||||
|
|
||||||
#include "Defs.h"
|
#include "Defs.hpp"
|
||||||
|
|
||||||
#include "String.h"
|
#include "String.hpp"
|
||||||
|
|
||||||
namespace godot {
|
namespace godot {
|
||||||
|
|
Loading…
Reference in New Issue