Beispiel #1
0
Variant Object::get(const StringName &p_name, bool *r_valid) const {

	Variant ret;

	if (script_instance) {

		if (script_instance->get(p_name, ret)) {
			if (r_valid)
				*r_valid = true;
			return ret;
		}
	}

	//try built-in setgetter
	{
		if (ClassDB::get_property(const_cast<Object *>(this), p_name, ret)) {
			if (r_valid)
				*r_valid = true;
			return ret;
		}
	}

	if (p_name == CoreStringNames::get_singleton()->_script) {
		ret = get_script();
		if (r_valid)
			*r_valid = true;
		return ret;

	} else if (p_name == CoreStringNames::get_singleton()->_meta) {
		ret = metadata;
		if (r_valid)
			*r_valid = true;
		return ret;
#ifdef TOOLS_ENABLED
	} else if (p_name == CoreStringNames::get_singleton()->_sections_unfolded) {
		Array array;
		for (Set<String>::Element *E = editor_section_folding.front(); E; E = E->next()) {
			array.push_back(E->get());
		}
		if (r_valid)
			*r_valid = true;
		return array;
#endif
	} else {
		//something inside the object... :|
		bool success = _getv(p_name, ret);
		if (success) {
			if (r_valid)
				*r_valid = true;
			return ret;
		}
		//if nothing else, use getvar
		return getvar(p_name, r_valid);
	}
}
Beispiel #2
0
Variant Object::get(const StringName& p_name, bool *r_valid) const{


	Variant ret;

	if (script_instance) {

		if (script_instance->get(p_name,ret)) {
			if (r_valid)
				*r_valid=true;
			return ret;
		}

	}


	//try built-in setgetter
	{
		if (ObjectTypeDB::get_property(const_cast<Object*>(this),p_name,ret)) {
			if (r_valid)
				*r_valid=true;
			return ret;
		}
	}


	if (p_name==CoreStringNames::get_singleton()->_script) {
		ret = get_script();
		if (r_valid)
			*r_valid=true;
		return ret;

	} else if (p_name==CoreStringNames::get_singleton()->_meta) {
		ret = metadata;
		if (r_valid)
			*r_valid=true;
		return ret;
	} else {
		//something inside the object... :|
		bool success = _getv(p_name,ret);
		if (success) {
			if (r_valid)
				*r_valid=true;
			return ret;
		}
		//if nothing else, use getvar
		return getvar(p_name,r_valid);
	}


}
Beispiel #3
0
//old style get, deprecated
Variant Object::get(const String& p_name) const {

	Variant ret=_getv(p_name);
	if (ret.get_type()!=Variant::NIL)
		return ret;

	bool success;
	ObjectTypeDB::get_property(const_cast<Object*>(this),p_name,ret,success);
	if (success) {
		return ret;
	}

	if (p_name=="__meta__")
		return metadata;
	else if (p_name=="script/script")
		return script;

	if (script_instance) {
		return script_instance->get(p_name);
	}

	return Variant();

}