Example #1
0
FileAccess *FileAccess::open(const String &p_path, int p_mode_flags, Error *r_error) {

	//try packed data first

	FileAccess *ret = NULL;
	if (!(p_mode_flags & WRITE) && PackedData::get_singleton() && !PackedData::get_singleton()->is_disabled()) {
		ret = PackedData::get_singleton()->try_open_path(p_path);
		if (ret) {
			if (r_error)
				*r_error = OK;
			return ret;
		}
	}

	ret = create_for_path(p_path);
	Error err = ret->_open(p_path, p_mode_flags);

	if (r_error)
		*r_error = err;
	if (err != OK) {

		memdelete(ret);
		ret = NULL;
	}

	return ret;
}