diff options
Diffstat (limited to 'core/io')
| -rw-r--r-- | core/io/file_access_compressed.cpp | 35 | ||||
| -rw-r--r-- | core/io/file_access_network.cpp | 4 | ||||
| -rw-r--r-- | core/io/file_access_network.h | 1 | ||||
| -rw-r--r-- | core/io/file_access_pack.cpp | 2 | ||||
| -rw-r--r-- | core/io/file_access_zip.cpp | 89 | ||||
| -rw-r--r-- | core/io/image_loader.cpp | 38 | ||||
| -rw-r--r-- | core/io/image_loader.h | 13 | ||||
| -rw-r--r-- | core/io/ip_address.cpp | 2 | ||||
| -rw-r--r-- | core/io/logger.cpp | 17 | ||||
| -rw-r--r-- | core/io/marshalls.cpp | 10 | ||||
| -rw-r--r-- | core/io/multiplayer_api.cpp | 4 | ||||
| -rw-r--r-- | core/io/packet_peer.cpp | 7 | ||||
| -rw-r--r-- | core/io/packet_peer_udp.cpp | 13 | ||||
| -rw-r--r-- | core/io/resource_format_binary.cpp | 20 | ||||
| -rw-r--r-- | core/io/resource_loader.cpp | 12 | ||||
| -rw-r--r-- | core/io/resource_loader.h | 9 | ||||
| -rw-r--r-- | core/io/resource_saver.cpp | 2 | ||||
| -rw-r--r-- | core/io/resource_saver.h | 4 | ||||
| -rw-r--r-- | core/io/stream_peer_tcp.cpp | 11 | ||||
| -rw-r--r-- | core/io/tcp_server.cpp | 5 |
20 files changed, 167 insertions, 131 deletions
diff --git a/core/io/file_access_compressed.cpp b/core/io/file_access_compressed.cpp index 645d97ae7e..a3633dc1f4 100644 --- a/core/io/file_access_compressed.cpp +++ b/core/io/file_access_compressed.cpp @@ -373,24 +373,23 @@ uint64_t FileAccessCompressed::_get_modified_time(const String &p_file) { return 0; } -FileAccessCompressed::FileAccessCompressed() { - - f = NULL; - magic = "GCMP"; - cmode = Compression::MODE_ZSTD; - writing = false; - write_ptr = 0; - write_buffer_size = 0; - write_max = 0; - block_size = 0; - read_eof = false; - at_end = false; - read_total = 0; - read_ptr = NULL; - read_block = 0; - read_block_count = 0; - read_block_size = 0; - read_pos = 0; +FileAccessCompressed::FileAccessCompressed() : + cmode(Compression::MODE_ZSTD), + writing(false), + write_ptr(0), + write_buffer_size(0), + write_max(0), + block_size(0), + read_eof(false), + at_end(false), + read_ptr(NULL), + read_block(0), + read_block_count(0), + read_block_size(0), + read_pos(0), + read_total(0), + magic("GCMP"), + f(NULL) { } FileAccessCompressed::~FileAccessCompressed() { diff --git a/core/io/file_access_network.cpp b/core/io/file_access_network.cpp index 6b6856dcc8..b9544ac166 100644 --- a/core/io/file_access_network.cpp +++ b/core/io/file_access_network.cpp @@ -500,8 +500,9 @@ uint64_t FileAccessNetwork::_get_modified_time(const String &p_file) { void FileAccessNetwork::configure() { GLOBAL_DEF("network/remote_fs/page_size", 65536); + ProjectSettings::get_singleton()->set_custom_property_info("network/remote_fs/page_size", PropertyInfo(Variant::INT, "network/remote_fs/page_size", PROPERTY_HINT_RANGE, "1,65536,1,or_greater")); //is used as denominator and can't be zero GLOBAL_DEF("network/remote_fs/page_read_ahead", 4); - GLOBAL_DEF("network/remote_fs/max_pages", 20); + ProjectSettings::get_singleton()->set_custom_property_info("network/remote_fs/page_read_ahead", PropertyInfo(Variant::INT, "network/remote_fs/page_read_ahead", PROPERTY_HINT_RANGE, "0,8,1,or_greater")); } FileAccessNetwork::FileAccessNetwork() { @@ -519,7 +520,6 @@ FileAccessNetwork::FileAccessNetwork() { nc->unlock_mutex(); page_size = GLOBAL_GET("network/remote_fs/page_size"); read_ahead = GLOBAL_GET("network/remote_fs/page_read_ahead"); - max_pages = GLOBAL_GET("network/remote_fs/max_pages"); last_activity_val = 0; waiting_on_page = -1; last_page = -1; diff --git a/core/io/file_access_network.h b/core/io/file_access_network.h index e32dcea990..c929e8446d 100644 --- a/core/io/file_access_network.h +++ b/core/io/file_access_network.h @@ -98,7 +98,6 @@ class FileAccessNetwork : public FileAccess { int page_size; int read_ahead; - int max_pages; mutable int waiting_on_page; mutable int last_activity_val; diff --git a/core/io/file_access_pack.cpp b/core/io/file_access_pack.cpp index 40f756ba9a..3823285792 100644 --- a/core/io/file_access_pack.cpp +++ b/core/io/file_access_pack.cpp @@ -455,7 +455,7 @@ String DirAccessPack::get_current_dir() { while (pd->parent) { pd = pd->parent; - p = pd->name + "/" + p; + p = pd->name.plus_file(p); } return "res://" + p; diff --git a/core/io/file_access_zip.cpp b/core/io/file_access_zip.cpp index 7b6385c3ff..d99cdf0d86 100644 --- a/core/io/file_access_zip.cpp +++ b/core/io/file_access_zip.cpp @@ -43,31 +43,31 @@ static void *godot_open(void *data, const char *p_fname, int mode) { if (mode & ZLIB_FILEFUNC_MODE_WRITE) { return NULL; - }; + } FileAccess *f = (FileAccess *)data; f->open(p_fname, FileAccess::READ); return f->is_open() ? data : NULL; -}; +} static uLong godot_read(void *data, void *fdata, void *buf, uLong size) { FileAccess *f = (FileAccess *)data; f->get_buffer((uint8_t *)buf, size); return size; -}; +} static uLong godot_write(voidpf opaque, voidpf stream, const void *buf, uLong size) { return 0; -}; +} static long godot_tell(voidpf opaque, voidpf stream) { FileAccess *f = (FileAccess *)opaque; return f->get_position(); -}; +} static long godot_seek(voidpf opaque, voidpf stream, uLong offset, int origin) { @@ -84,36 +84,36 @@ static long godot_seek(voidpf opaque, voidpf stream, uLong offset, int origin) { break; default: break; - }; + } f->seek(pos); return 0; -}; +} static int godot_close(voidpf opaque, voidpf stream) { FileAccess *f = (FileAccess *)opaque; f->close(); return 0; -}; +} static int godot_testerror(voidpf opaque, voidpf stream) { FileAccess *f = (FileAccess *)opaque; return f->get_error() != OK ? 1 : 0; -}; +} static voidpf godot_alloc(voidpf opaque, uInt items, uInt size) { return memalloc(items * size); -}; +} static void godot_free(voidpf opaque, voidpf address) { memfree(address); -}; +} -}; // extern "C" +} // extern "C" void ZipArchive::close_handle(unzFile p_file) const { @@ -122,7 +122,7 @@ void ZipArchive::close_handle(unzFile p_file) const { unzCloseCurrentFile(p_file); unzClose(p_file); memdelete(f); -}; +} unzFile ZipArchive::get_file_handle(String p_file) const { @@ -155,10 +155,10 @@ unzFile ZipArchive::get_file_handle(String p_file) const { unzClose(pkg); ERR_FAIL_V(NULL); - }; + } return pkg; -}; +} bool ZipArchive::try_open_pack(const String &p_path) { @@ -215,36 +215,36 @@ bool ZipArchive::try_open_pack(const String &p_path) { if ((i + 1) < gi.number_entry) { unzGoToNextFile(zfile); - }; - }; + } + } return true; -}; +} bool ZipArchive::file_exists(String p_name) const { return files.has(p_name); -}; +} FileAccess *ZipArchive::get_file(const String &p_path, PackedData::PackedFile *p_file) { return memnew(FileAccessZip(p_path, *p_file)); -}; +} ZipArchive *ZipArchive::get_singleton() { if (instance == NULL) { instance = memnew(ZipArchive); - }; + } return instance; -}; +} ZipArchive::ZipArchive() { instance = this; //fa_create_func = FileAccess::get_create_func(); -}; +} ZipArchive::~ZipArchive() { @@ -253,10 +253,10 @@ ZipArchive::~ZipArchive() { FileAccess *f = (FileAccess *)unzGetOpaque(packages[i].zfile); unzClose(packages[i].zfile); memdelete(f); - }; + } packages.clear(); -}; +} Error FileAccessZip::_open(const String &p_path, int p_mode_flags) { @@ -272,7 +272,7 @@ Error FileAccessZip::_open(const String &p_path, int p_mode_flags) { ERR_FAIL_COND_V(err != UNZ_OK, FAILED); return OK; -}; +} void FileAccessZip::close() { @@ -283,50 +283,50 @@ void FileAccessZip::close() { ERR_FAIL_COND(!arch); arch->close_handle(zfile); zfile = NULL; -}; +} bool FileAccessZip::is_open() const { return zfile != NULL; -}; +} void FileAccessZip::seek(size_t p_position) { ERR_FAIL_COND(!zfile); unzSeekCurrentFile(zfile, p_position); -}; +} void FileAccessZip::seek_end(int64_t p_position) { ERR_FAIL_COND(!zfile); unzSeekCurrentFile(zfile, get_len() + p_position); -}; +} size_t FileAccessZip::get_position() const { ERR_FAIL_COND_V(!zfile, 0); return unztell(zfile); -}; +} size_t FileAccessZip::get_len() const { ERR_FAIL_COND_V(!zfile, 0); return file_info.uncompressed_size; -}; +} bool FileAccessZip::eof_reached() const { ERR_FAIL_COND_V(!zfile, true); return at_eof; -}; +} uint8_t FileAccessZip::get_8() const { uint8_t ret = 0; get_buffer(&ret, 1); return ret; -}; +} int FileAccessZip::get_buffer(uint8_t *p_dst, int p_length) const { @@ -339,20 +339,20 @@ int FileAccessZip::get_buffer(uint8_t *p_dst, int p_length) const { if (read < p_length) at_eof = true; return read; -}; +} Error FileAccessZip::get_error() const { if (!zfile) { return ERR_UNCONFIGURED; - }; + } if (eof_reached()) { return ERR_FILE_EOF; - }; + } return OK; -}; +} void FileAccessZip::flush() { @@ -362,22 +362,21 @@ void FileAccessZip::flush() { void FileAccessZip::store_8(uint8_t p_dest) { ERR_FAIL(); -}; +} bool FileAccessZip::file_exists(const String &p_name) { return false; -}; - -FileAccessZip::FileAccessZip(const String &p_path, const PackedData::PackedFile &p_file) { +} - zfile = NULL; +FileAccessZip::FileAccessZip(const String &p_path, const PackedData::PackedFile &p_file) : + zfile(NULL) { _open(p_path, FileAccess::READ); -}; +} FileAccessZip::~FileAccessZip() { close(); -}; +} #endif diff --git a/core/io/image_loader.cpp b/core/io/image_loader.cpp index f202320043..e4fbb0247d 100644 --- a/core/io/image_loader.cpp +++ b/core/io/image_loader.cpp @@ -60,7 +60,7 @@ Error ImageLoader::load_image(String p_file, Ref<Image> p_image, FileAccess *p_c String extension = p_file.get_extension(); - for (int i = 0; i < loader_count; i++) { + for (int i = 0; i < loader.size(); i++) { if (!loader[i]->recognize(extension)) continue; @@ -83,30 +83,45 @@ Error ImageLoader::load_image(String p_file, Ref<Image> p_image, FileAccess *p_c void ImageLoader::get_recognized_extensions(List<String> *p_extensions) { - for (int i = 0; i < loader_count; i++) { + for (int i = 0; i < loader.size(); i++) { loader[i]->get_recognized_extensions(p_extensions); } } -bool ImageLoader::recognize(const String &p_extension) { +ImageFormatLoader *ImageLoader::recognize(const String &p_extension) { - for (int i = 0; i < loader_count; i++) { + for (int i = 0; i < loader.size(); i++) { if (loader[i]->recognize(p_extension)) - return true; + return loader[i]; } - return false; + return NULL; } -ImageFormatLoader *ImageLoader::loader[MAX_LOADERS]; -int ImageLoader::loader_count = 0; +Vector<ImageFormatLoader *> ImageLoader::loader; void ImageLoader::add_image_format_loader(ImageFormatLoader *p_loader) { - ERR_FAIL_COND(loader_count >= MAX_LOADERS); - loader[loader_count++] = p_loader; + loader.push_back(p_loader); +} + +void ImageLoader::remove_image_format_loader(ImageFormatLoader *p_loader) { + + loader.erase(p_loader); +} + +const Vector<ImageFormatLoader *> &ImageLoader::get_image_format_loaders() { + + return loader; +} + +void ImageLoader::cleanup() { + + while (loader.size()) { + remove_image_format_loader(loader[0]); + } } ///////////////// @@ -118,7 +133,6 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String &p_origin if (r_error) { *r_error = ERR_CANT_OPEN; } - memdelete(f); return RES(); } @@ -138,7 +152,7 @@ RES ResourceFormatLoaderImage::load(const String &p_path, const String &p_origin int idx = -1; - for (int i = 0; i < ImageLoader::loader_count; i++) { + for (int i = 0; i < ImageLoader::loader.size(); i++) { if (ImageLoader::loader[i]->recognize(extension)) { idx = i; break; diff --git a/core/io/image_loader.h b/core/io/image_loader.h index 561f275e0c..7a58d46f93 100644 --- a/core/io/image_loader.h +++ b/core/io/image_loader.h @@ -70,20 +70,21 @@ public: class ImageLoader { - enum { - MAX_LOADERS = 8 - }; + static Vector<ImageFormatLoader *> loader; friend class ResourceFormatLoaderImage; - static ImageFormatLoader *loader[MAX_LOADERS]; - static int loader_count; protected: public: static Error load_image(String p_file, Ref<Image> p_image, FileAccess *p_custom = NULL, bool p_force_linear = false, float p_scale = 1.0); static void get_recognized_extensions(List<String> *p_extensions); - static bool recognize(const String &p_extension); + static ImageFormatLoader *recognize(const String &p_extension); static void add_image_format_loader(ImageFormatLoader *p_loader); + static void remove_image_format_loader(ImageFormatLoader *p_loader); + + static const Vector<ImageFormatLoader *> &get_image_format_loaders(); + + static void cleanup(); }; class ResourceFormatLoaderImage : public ResourceFormatLoader { diff --git a/core/io/ip_address.cpp b/core/io/ip_address.cpp index 6d979d10eb..194d1af6bf 100644 --- a/core/io/ip_address.cpp +++ b/core/io/ip_address.cpp @@ -184,7 +184,7 @@ bool IP_Address::is_ipv4() const { } const uint8_t *IP_Address::get_ipv4() const { - ERR_FAIL_COND_V(!is_ipv4(), 0); + ERR_FAIL_COND_V(!is_ipv4(), &(field8[12])); // Not the correct IPv4 (it's an IPv6), but we don't want to return a null pointer risking an engine crash. return &(field8[12]); } diff --git a/core/io/logger.cpp b/core/io/logger.cpp index 051c02ab32..3c4b4a1ac3 100644 --- a/core/io/logger.cpp +++ b/core/io/logger.cpp @@ -45,6 +45,10 @@ #endif #endif +#if defined(MINGW_ENABLED) || defined(_MSC_VER) +#define sprintf sprintf_s +#endif + bool Logger::should_log(bool p_err) { return (!p_err || _print_error_enabled) && (p_err || _print_line_enabled); } @@ -175,11 +179,10 @@ void RotatedFileLogger::rotate_file() { file = FileAccess::open(base_path, FileAccess::WRITE); } -RotatedFileLogger::RotatedFileLogger(const String &p_base_path, int p_max_files) { - file = NULL; - base_path = p_base_path.simplify_path(); - max_files = p_max_files > 0 ? p_max_files : 1; - +RotatedFileLogger::RotatedFileLogger(const String &p_base_path, int p_max_files) : + base_path(p_base_path.simplify_path()), + max_files(p_max_files > 0 ? p_max_files : 1), + file(NULL) { rotate_file(); } @@ -236,8 +239,8 @@ void StdLogger::logv(const char *p_format, va_list p_list, bool p_err) { StdLogger::~StdLogger() {} -CompositeLogger::CompositeLogger(Vector<Logger *> p_loggers) { - loggers = p_loggers; +CompositeLogger::CompositeLogger(Vector<Logger *> p_loggers) : + loggers(p_loggers) { } void CompositeLogger::logv(const char *p_format, va_list p_list, bool p_err) { diff --git a/core/io/marshalls.cpp b/core/io/marshalls.cpp index ec430d41a9..c71903c94d 100644 --- a/core/io/marshalls.cpp +++ b/core/io/marshalls.cpp @@ -55,9 +55,8 @@ ObjectID EncodedObjectAsID::get_object_id() const { return id; } -EncodedObjectAsID::EncodedObjectAsID() { - - id = 0; +EncodedObjectAsID::EncodedObjectAsID() : + id(0) { } #define ENCODE_MASK 0xFF @@ -850,17 +849,16 @@ Error encode_variant(const Variant &p_variant, uint8_t *r_buffer, int &r_len, bo } break; case Variant::INT: { - int64_t val = p_variant; if (flags & ENCODE_FLAG_64) { //64 bits if (buf) { - encode_uint64(val, buf); + encode_uint64(p_variant.operator int64_t(), buf); } r_len += 8; } else { if (buf) { - encode_uint32(int32_t(val), buf); + encode_uint32(p_variant.operator int32_t(), buf); } r_len += 4; diff --git a/core/io/multiplayer_api.cpp b/core/io/multiplayer_api.cpp index 17b77bc535..b3f0a76a80 100644 --- a/core/io/multiplayer_api.cpp +++ b/core/io/multiplayer_api.cpp @@ -416,7 +416,7 @@ bool MultiplayerAPI::_send_confirm_path(NodePath p_path, PathSentCache *psc, int Map<int, bool>::Element *F = psc->confirmed_peers.find(E->get()); - if (!F || F->get() == false) { + if (!F || !F->get()) { // Path was not cached, or was cached but is unconfirmed. if (!F) { // Not cached at all, take note. @@ -578,7 +578,7 @@ void MultiplayerAPI::_send_rpc(Node *p_from, int p_to, bool p_unreliable, bool p network_peer->set_target_peer(E->get()); // To this one specifically. - if (F->get() == true) { + if (F->get()) { // This one confirmed path, so use id. encode_uint32(psc->id, &(packet_cache.write[1])); network_peer->put_packet(packet_cache.ptr(), ofs); diff --git a/core/io/packet_peer.cpp b/core/io/packet_peer.cpp index b6dd4eaf6f..aadcca01d5 100644 --- a/core/io/packet_peer.cpp +++ b/core/io/packet_peer.cpp @@ -35,10 +35,9 @@ /* helpers / binders */ -PacketPeer::PacketPeer() { - - allow_object_decoding = false; - last_get_error = OK; +PacketPeer::PacketPeer() : + last_get_error(OK), + allow_object_decoding(false) { } void PacketPeer::set_allow_object_decoding(bool p_enable) { diff --git a/core/io/packet_peer_udp.cpp b/core/io/packet_peer_udp.cpp index d33ba6f855..2e916d6a48 100644 --- a/core/io/packet_peer_udp.cpp +++ b/core/io/packet_peer_udp.cpp @@ -239,13 +239,12 @@ void PacketPeerUDP::_bind_methods() { ClassDB::bind_method(D_METHOD("set_dest_address", "host", "port"), &PacketPeerUDP::_set_dest_address); } -PacketPeerUDP::PacketPeerUDP() { - - _sock = Ref<NetSocket>(NetSocket::create()); - blocking = true; - packet_port = 0; - queue_count = 0; - peer_port = 0; +PacketPeerUDP::PacketPeerUDP() : + packet_port(0), + queue_count(0), + peer_port(0), + blocking(true), + _sock(Ref<NetSocket>(NetSocket::create())) { rb.resize(16); } diff --git a/core/io/resource_format_binary.cpp b/core/io/resource_format_binary.cpp index e5741014a4..b91268dab2 100644 --- a/core/io/resource_format_binary.cpp +++ b/core/io/resource_format_binary.cpp @@ -970,12 +970,11 @@ String ResourceInteractiveLoaderBinary::recognize(FileAccess *p_f) { return type; } -ResourceInteractiveLoaderBinary::ResourceInteractiveLoaderBinary() { - - f = NULL; - stage = 0; - error = OK; - translation_remapped = false; +ResourceInteractiveLoaderBinary::ResourceInteractiveLoaderBinary() : + translation_remapped(false), + f(NULL), + error(OK), + stage(0) { } ResourceInteractiveLoaderBinary::~ResourceInteractiveLoaderBinary() { @@ -1309,7 +1308,7 @@ void ResourceFormatSaverBinaryInstance::write_variant(FileAccess *f, const Varia case Variant::INT: { int64_t val = p_property; - if (val > 0x7FFFFFFF || val < -0x80000000) { + if (val > 0x7FFFFFFF || val < -(int64_t)0x80000000) { f->store_32(VARIANT_INT64); f->store_64(val); @@ -1813,8 +1812,13 @@ Error ResourceFormatSaverBinaryInstance::save(const String &p_path, const RES &p Property p; p.name_idx = get_string_index(F->get().name); p.value = E->get()->get(F->get().name); - if (((F->get().usage & PROPERTY_USAGE_STORE_IF_NONZERO) && p.value.is_zero()) || ((F->get().usage & PROPERTY_USAGE_STORE_IF_NONONE) && p.value.is_one())) + + Variant default_value = ClassDB::class_get_default_property_value(E->get()->get_class(), F->get().name); + + if (default_value.get_type() != Variant::NIL && bool(Variant::evaluate(Variant::OP_EQUAL, p.value, default_value))) { continue; + } + p.pi = F->get(); rd.properties.push_back(p); diff --git a/core/io/resource_loader.cpp b/core/io/resource_loader.cpp index 8c56d55e85..71b01aa94a 100644 --- a/core/io/resource_loader.cpp +++ b/core/io/resource_loader.cpp @@ -259,6 +259,10 @@ RES ResourceLoader::load(const String &p_path, const String &p_type_hint, bool p } #endif + if (_loaded_callback) { + _loaded_callback(res, p_path); + } + return res; } @@ -635,6 +639,12 @@ void ResourceLoader::clear_path_remaps() { path_remaps.clear(); } +void ResourceLoader::set_load_callback(ResourceLoadedCallback p_callback) { + _loaded_callback = p_callback; +} + +ResourceLoadedCallback ResourceLoader::_loaded_callback = NULL; + ResourceLoadErrorNotify ResourceLoader::err_notify = NULL; void *ResourceLoader::err_notify_ud = NULL; @@ -647,3 +657,5 @@ bool ResourceLoader::timestamp_on_load = false; SelfList<Resource>::List ResourceLoader::remapped_list; HashMap<String, Vector<String> > ResourceLoader::translation_remaps; HashMap<String, String> ResourceLoader::path_remaps; + +ResourceLoaderImport ResourceLoader::import = NULL; diff --git a/core/io/resource_loader.h b/core/io/resource_loader.h index de0981350d..a46a00203f 100644 --- a/core/io/resource_loader.h +++ b/core/io/resource_loader.h @@ -77,6 +77,9 @@ public: typedef void (*ResourceLoadErrorNotify)(void *p_ud, const String &p_text); typedef void (*DependencyErrorNotify)(void *p_ud, const String &p_loading, const String &p_which, const String &p_type); +typedef Error (*ResourceLoaderImport)(const String &p_path); +typedef void (*ResourceLoadedCallback)(RES p_resource, const String &p_path); + class ResourceLoader { enum { @@ -104,6 +107,8 @@ class ResourceLoader { //internal load function static RES _load(const String &p_path, const String &p_original_path, const String &p_type_hint, bool p_no_cache, Error *r_error); + static ResourceLoadedCallback _loaded_callback; + public: static Ref<ResourceInteractiveLoader> load_interactive(const String &p_path, const String &p_type_hint = "", bool p_no_cache = false, Error *r_error = NULL); static RES load(const String &p_path, const String &p_type_hint = "", bool p_no_cache = false, Error *r_error = NULL); @@ -118,6 +123,7 @@ public: static int get_import_order(const String &p_path); static void set_timestamp_on_load(bool p_timestamp) { timestamp_on_load = p_timestamp; } + static bool get_timestamp_on_load() { return timestamp_on_load; } static void notify_load_error(const String &p_err) { if (err_notify) err_notify(err_notify_ud, p_err); @@ -147,6 +153,9 @@ public: static void reload_translation_remaps(); static void load_translation_remaps(); static void clear_translation_remaps(); + + static void set_load_callback(ResourceLoadedCallback p_callback); + static ResourceLoaderImport import; }; #endif diff --git a/core/io/resource_saver.cpp b/core/io/resource_saver.cpp index 5c8188f735..097e81e308 100644 --- a/core/io/resource_saver.cpp +++ b/core/io/resource_saver.cpp @@ -90,7 +90,7 @@ Error ResourceSaver::save(const String &p_path, const RES &p_resource, uint32_t rwcopy->set_path(old_path); if (save_callback && p_path.begins_with("res://")) - save_callback(p_path); + save_callback(p_resource, p_path); return OK; } else { diff --git a/core/io/resource_saver.h b/core/io/resource_saver.h index 7ed580f2d6..cdd43292a2 100644 --- a/core/io/resource_saver.h +++ b/core/io/resource_saver.h @@ -46,7 +46,7 @@ public: virtual ~ResourceFormatSaver() {} }; -typedef void (*ResourceSavedCallback)(const String &p_path); +typedef void (*ResourceSavedCallback)(Ref<Resource> p_resource, const String &p_path); class ResourceSaver { @@ -76,6 +76,8 @@ public: static void add_resource_format_saver(ResourceFormatSaver *p_format_saver, bool p_at_front = false); static void set_timestamp_on_save(bool p_timestamp) { timestamp_on_save = p_timestamp; } + static bool get_timestamp_on_save() { return timestamp_on_save; } + static void set_save_callback(ResourceSavedCallback p_callback); }; diff --git a/core/io/stream_peer_tcp.cpp b/core/io/stream_peer_tcp.cpp index 28561e8cbc..4b86735aa3 100644 --- a/core/io/stream_peer_tcp.cpp +++ b/core/io/stream_peer_tcp.cpp @@ -349,12 +349,11 @@ void StreamPeerTCP::_bind_methods() { BIND_ENUM_CONSTANT(STATUS_ERROR); } -StreamPeerTCP::StreamPeerTCP() { - - _sock = Ref<NetSocket>(NetSocket::create()); - status = STATUS_NONE; - peer_host = IP_Address(); - peer_port = 0; +StreamPeerTCP::StreamPeerTCP() : + _sock(Ref<NetSocket>(NetSocket::create())), + status(STATUS_NONE), + peer_host(IP_Address()), + peer_port(0) { } StreamPeerTCP::~StreamPeerTCP() { diff --git a/core/io/tcp_server.cpp b/core/io/tcp_server.cpp index b8194cb17f..be9176779e 100644 --- a/core/io/tcp_server.cpp +++ b/core/io/tcp_server.cpp @@ -116,9 +116,8 @@ void TCP_Server::stop() { } } -TCP_Server::TCP_Server() { - - _sock = Ref<NetSocket>(NetSocket::create()); +TCP_Server::TCP_Server() : + _sock(Ref<NetSocket>(NetSocket::create())) { } TCP_Server::~TCP_Server() { |