Merge pull request #1585 from UsernameIsAReservedWord/add_is_queued_for_deletion_in_objects

add : bool Object.is_queued_for_deletion()
This commit is contained in:
Juan Linietsky 2015-04-07 20:14:51 -03:00
commit 7b75658bb2
3 changed files with 11 additions and 1 deletions

View file

@ -1503,6 +1503,8 @@ void Object::_bind_methods() {
ObjectTypeDB::bind_method(_MD("XL_MESSAGE","message"),&Object::XL_MESSAGE); ObjectTypeDB::bind_method(_MD("XL_MESSAGE","message"),&Object::XL_MESSAGE);
ObjectTypeDB::bind_method(_MD("tr","message"),&Object::tr); ObjectTypeDB::bind_method(_MD("tr","message"),&Object::tr);
ObjectTypeDB::bind_method(_MD("is_queued_for_deletion"),&Object::is_queued_for_deletion);
ADD_SIGNAL( MethodInfo("script_changed")); ADD_SIGNAL( MethodInfo("script_changed"));
BIND_VMETHOD( MethodInfo("_notification",PropertyInfo(Variant::INT,"what")) ); BIND_VMETHOD( MethodInfo("_notification",PropertyInfo(Variant::INT,"what")) );
@ -1566,6 +1568,10 @@ void Object::get_translatable_strings(List<String> *p_strings) const {
} }
bool Object::is_queued_for_deletion() const {
return _is_queued_for_deletion;
}
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED
void Object::set_edited(bool p_edited) { void Object::set_edited(bool p_edited) {
@ -1587,6 +1593,7 @@ Object::Object() {
_instance_ID=0; _instance_ID=0;
_instance_ID = ObjectDB::add_instance(this); _instance_ID = ObjectDB::add_instance(this);
_can_translate=true; _can_translate=true;
_is_queued_for_deletion=false;
script_instance=NULL; script_instance=NULL;
#ifdef TOOLS_ENABLED #ifdef TOOLS_ENABLED

View file

@ -397,7 +397,6 @@ friend void postinitialize_handler(Object*);
protected: protected:
virtual bool _use_builtin_script() const { return false; } virtual bool _use_builtin_script() const { return false; }
virtual void _initialize_typev() { initialize_type(); } virtual void _initialize_typev() { initialize_type(); }
virtual bool _setv(const StringName& p_name,const Variant &p_property) { return false; }; virtual bool _setv(const StringName& p_name,const Variant &p_property) { return false; };
@ -589,6 +588,9 @@ public:
StringName XL_MESSAGE(const StringName& p_message) const; //translate message (internationalization) StringName XL_MESSAGE(const StringName& p_message) const; //translate message (internationalization)
StringName tr(const StringName& p_message) const; //translate message (alternative) StringName tr(const StringName& p_message) const; //translate message (alternative)
bool _is_queued_for_deletion; // set to true by SceneTree::queue_delete()
bool is_queued_for_deletion() const;
_FORCE_INLINE_ void set_message_translation(bool p_enable) { _can_translate=p_enable; } _FORCE_INLINE_ void set_message_translation(bool p_enable) { _can_translate=p_enable; }
_FORCE_INLINE_ bool can_translate_messages() const { return _can_translate; } _FORCE_INLINE_ bool can_translate_messages() const { return _can_translate; }
Object(); Object();

View file

@ -850,6 +850,7 @@ void SceneTree::queue_delete(Object *p_object) {
_THREAD_SAFE_METHOD_ _THREAD_SAFE_METHOD_
ERR_FAIL_NULL(p_object); ERR_FAIL_NULL(p_object);
p_object->_is_queued_for_deletion = true;
delete_queue.push_back(p_object->get_instance_ID()); delete_queue.push_back(p_object->get_instance_ID());
} }