diff --git a/development/cpp/object_class.rst b/development/cpp/object_class.rst index 974ec283..108cf57b 100644 --- a/development/cpp/object_class.rst +++ b/development/cpp/object_class.rst @@ -15,7 +15,7 @@ macro like this. class CustomObject : public Object { - GDCLASS(CustomObject,Object); // this is required to inherit + GDCLASS(CustomObject, Object); // this is required to inherit }; This makes Objects gain a lot of functionality, like for example @@ -23,9 +23,9 @@ This makes Objects gain a lot of functionality, like for example .. code:: cpp obj = memnew(CustomObject); - print_line("Object Type: ",obj->get_type()); //print object type + print_line("Object class: ", obj->get_class()); // print object class - obj2 = obj->cast_to(); // converting between types, this also works without RTTI enabled. + obj2 = obj->cast_to(); // converting between classes, this also works without RTTI enabled. References: ~~~~~~~~~~~ @@ -43,16 +43,16 @@ Classes are registered by calling: .. code:: cpp - ClassDB::register_type() + ClassDB::register_class() -Registering it will allow the type to be instanced by scripts, code, or +Registering it will allow the class to be instanced by scripts, code, or creating them again when deserializing. Registering as virtual is the same but it can't be instanced. .. code:: cpp - ClassDB::register_virtual_type() + ClassDB::register_virtual_class() Object-derived classes can override the static function ``static void _bind_methods()``. When one class is registered, this @@ -66,13 +66,13 @@ Registering functions is one: .. code:: cpp - ClassDB::register_method(D_METHOD("methodname","arg1name","arg2name"),&MyCustomMethod); + ClassDB::register_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomMethod); Default values for arguments can be passed in reverse order: .. code:: cpp - ClassDB::register_method(D_METHOD("methodname","arg1name","arg2name"),&MyCustomType::method,DEFVAL(-1)); //default value for arg2name + ClassDB::register_method(D_METHOD("methodname", "arg1name", "arg2name"), &MyCustomType::method, DEFVAL(-1)); // default value for arg2name ``D_METHOD`` is a macro that converts "methodname" to a StringName for more efficiency. Argument names are used for introspection, but when @@ -88,7 +88,7 @@ string passing the name can be passed for brevity. References: ~~~~~~~~~~~ -- `core/object_type_db.h `__ +- `core/class_db.h `__ Constants --------- @@ -107,14 +107,14 @@ convertible to int, for this a macro is provided: .. code:: cpp - VARIANT_ENUM_CAST( MyClass::SomeMode ); // now functions that take SomeMode can be bound. + VARIANT_ENUM_CAST(MyClass::SomeMode); // now functions that take SomeMode can be bound. The constants can also be bound inside ``_bind_methods``, by using: .. code:: cpp - BIND_CONSTANT( MODE_FIRST ); - BIND_CONSTANT( MODE_SECOND ); + BIND_CONSTANT(MODE_FIRST); + BIND_CONSTANT(MODE_SECOND); Properties (set/get) -------------------- @@ -129,13 +129,13 @@ constructed as: .. code:: cpp - PropertyInfo(type,name,hint,hint_string,usage_flags) + PropertyInfo(type, name, hint, hint_string, usage_flags) For example: .. code:: cpp - PropertyInfo(Variant::INT,"amount",PROPERTY_HINT_RANGE,"0,49,1",PROPERTY_USAGE_EDITOR) + PropertyInfo(Variant::INT, "amount", PROPERTY_HINT_RANGE, "0,49,1", PROPERTY_USAGE_EDITOR) This is an integer property, named "amount", hint is a range, range goes from 0 to 49 in steps of 1 (integers). It is only usable for the editor @@ -145,7 +145,7 @@ Another example: .. code:: cpp - PropertyInfo(Variant::STRING,"modes",PROPERTY_HINT_ENUM,"Enabled,Disabled,Turbo") + PropertyInfo(Variant::STRING, "modes", PROPERTY_HINT_ENUM, "Enabled,Disabled,Turbo") This is a string property, can take any string but the editor will only allow the defined hint ones. Since no usage flags were specified, the @@ -165,10 +165,9 @@ set/get functions exist. Example: .. code:: cpp - ADD_PROPERTY( PropertyInfo(Variant::INT,"amount"), _SCS("set_amount"), _SCS("get_amount") ) + ADD_PROPERTY(PropertyInfo(Variant::INT, "amount"), "set_amount", "get_amount") -This creates the property using the setter and the getter. ``_SCS`` is a -macro that creates a StringName efficiently. +This creates the property using the setter and the getter. Binding properties using ``_set``/``_get``/``_get_property_list`` ----------------------------------------------------------------- @@ -183,9 +182,9 @@ call). .. code:: cpp - void _get_property_info(List *r_props); //return list of properties - bool _get(const StringName& p_property, Variany& r_value) const; //return true if property was found - bool _set(const StringName& p_property, const Variany& p_value); //return true if property was found + void _get_property_info(List *r_props); // return list of properties + bool _get(const StringName &p_property, Variant &r_value) const; // return true if property was found + bool _set(const StringName &p_property, const Variant &p_value); // return true if property was found This is also a little less efficient since ``p_property`` must be compared against the desired names in serial order. @@ -216,9 +215,9 @@ languages). Connecting to them is rather easy: .. code:: cpp - obj->connect(,target_instance,target_method) - //for example - obj->connect("enter_tree",this,"_node_entered_tree") + obj->connect(, target_instance, target_method) + // for example: + obj->connect("enter_tree", this, "_node_entered_tree") The method ``_node_entered_tree`` must be registered to the class using ``ClassDB::register_method`` (explained before). @@ -228,7 +227,7 @@ Adding signals to a class is done in ``_bind_methods``, using the .. code:: cpp - ADD_SIGNAL( MethodInfo("been_killed") ) + ADD_SIGNAL(MethodInfo("been_killed")) References ---------- @@ -240,10 +239,10 @@ Declaring them must be done using Ref<> template. For example: .. code:: cpp class MyReference: public Reference { - GDCLASS( MyReference,Reference ); + GDCLASS(MyReference, Reference); }; - Ref myref = memnew( MyReference ); + Ref myref = memnew(MyReference); ``myref`` is reference counted. It will be freed when no more Ref<> templates point to it. @@ -297,7 +296,7 @@ Saving a resource can be done with the resource saver API: .. code:: cpp - ResourceSaver::save("res://someresource.res",instance) + ResourceSaver::save("res://someresource.res", instance) Instance will be saved. Sub resources that have a path to a file will be saved as a reference to that resource. Sub resources without a path will