wave-survival/modules/wave_survival/macros.h

39 lines
1.7 KiB
C

#ifndef GODOT_EXTRA_MACROS_H
#define GODOT_EXTRA_MACROS_H
#define PRELOAD_SCENE(m_scene) \
do { \
if (Node * node{ m_scene->instantiate() }) { \
if (Node3D * node_3d{ cast_to<Node3D>(node) }) { \
node_3d->set_visible(false); \
} \
add_child(node); \
node->connect("ready", callable_mp(node, &Node::queue_free)); \
} \
} while (0)
#define BIND_GET_SET(m_property) \
ClassDB::bind_method(D_METHOD("set_" #m_property, #m_property), \
&self_type::set_##m_property); \
ClassDB::bind_method(D_METHOD("get_" #m_property), \
&self_type::get_##m_property)
#define BIND_HPROPERTY(m_type, m_property, ...) \
BIND_GET_SET(m_property); \
ADD_PROPERTY(PropertyInfo(m_type, #m_property, __VA_ARGS__), \
"set_" #m_property, "get_" #m_property)
#define BIND_PROPERTY(m_type, m_property) \
BIND_GET_SET(m_property); \
ADD_PROPERTY(PropertyInfo(m_type, #m_property), "set_" #m_property, \
"get_" #m_property)
#define GETSET(m_value, ...) \
{ \
auto m_value{ get_##m_value() }; \
__VA_ARGS__ \
set_##m_value(m_value); \
}
#endif // !GODOT_EXTRA_MACROS_H