summaryrefslogtreecommitdiff
path: root/modules
diff options
context:
space:
mode:
Diffstat (limited to 'modules')
-rw-r--r--modules/SCsub2
-rw-r--r--modules/etc/image_etc.cpp30
-rw-r--r--modules/freetype/SCsub6
-rw-r--r--modules/gdnative/gdnative.cpp6
-rw-r--r--modules/gdnative/godot.h7
-rw-r--r--modules/gdscript/gd_editor.cpp6
-rw-r--r--modules/gdscript/gd_parser.cpp4
-rw-r--r--modules/regex/regex.cpp28
-rw-r--r--modules/squish/image_compress_squish.cpp9
-rw-r--r--modules/squish/image_compress_squish.h2
-rw-r--r--modules/stb_vorbis/audio_stream_ogg_vorbis.h2
-rw-r--r--modules/stb_vorbis/resource_importer_ogg_vorbis.cpp4
12 files changed, 75 insertions, 31 deletions
diff --git a/modules/SCsub b/modules/SCsub
index 4b9c08cf78..d1c0cdc05c 100644
--- a/modules/SCsub
+++ b/modules/SCsub
@@ -7,7 +7,7 @@ env_modules = env.Clone()
Export('env_modules')
env.modules_sources = [
- "register_module_types.cpp",
+ "register_module_types.gen.cpp",
]
# env.add_source_files(env.modules_sources,"*.cpp")
Export('env')
diff --git a/modules/etc/image_etc.cpp b/modules/etc/image_etc.cpp
index 4ccd5c8d89..d9daffc59e 100644
--- a/modules/etc/image_etc.cpp
+++ b/modules/etc/image_etc.cpp
@@ -94,10 +94,20 @@ static void _decompress_etc2(Image *p_img) {
// not implemented, to be removed
}
-static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_format) {
+static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_format, Image::CompressSource p_source) {
Image::Format img_format = p_img->get_format();
Image::DetectChannels detected_channels = p_img->get_detected_channels();
+ if (p_source == Image::COMPRESS_SOURCE_SRGB && (detected_channels == Image::DETECTED_R || detected_channels == Image::DETECTED_RG)) {
+ //R and RG do not support SRGB
+ detected_channels = Image::DETECTED_RGB;
+ }
+
+ if (p_source == Image::COMPRESS_SOURCE_NORMAL) {
+ //use RG channels only for normal
+ detected_channels = Image::DETECTED_RG;
+ }
+
if (img_format >= Image::FORMAT_DXT1) {
return; //do not compress, already compressed
}
@@ -130,8 +140,16 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
// prepare parameters to be passed to etc2comp
int num_cpus = OS::get_singleton()->get_processor_count();
int encoding_time = 0;
- float effort = CLAMP(p_lossy_quality * 100, 0, 100);
- Etc::ErrorMetric error_metric = Etc::ErrorMetric::BT709; // NOTE: we can experiment with other error metrics
+ float effort = 0.0; //default, reasonable time
+
+ if (p_lossy_quality > 0.75)
+ effort = 0.4;
+ else if (p_lossy_quality > 0.85)
+ effort = 0.6;
+ else if (p_lossy_quality > 0.95)
+ effort = 0.8;
+
+ Etc::ErrorMetric error_metric = Etc::ErrorMetric::RGBX; // NOTE: we can experiment with other error metrics
Etc::Image::Format etc2comp_etc_format = _image_format_to_etc2comp_format(etc_format);
int wofs = 0;
@@ -164,11 +182,11 @@ static void _compress_etc(Image *p_img, float p_lossy_quality, bool force_etc1_f
}
static void _compress_etc1(Image *p_img, float p_lossy_quality) {
- _compress_etc(p_img, p_lossy_quality, true);
+ _compress_etc(p_img, p_lossy_quality, true, Image::COMPRESS_SOURCE_GENERIC);
}
-static void _compress_etc2(Image *p_img, float p_lossy_quality) {
- _compress_etc(p_img, p_lossy_quality, false);
+static void _compress_etc2(Image *p_img, float p_lossy_quality, Image::CompressSource p_source) {
+ _compress_etc(p_img, p_lossy_quality, false, p_source);
}
void _register_etc_compress_func() {
diff --git a/modules/freetype/SCsub b/modules/freetype/SCsub
index 8401c36b54..6a89e8e087 100644
--- a/modules/freetype/SCsub
+++ b/modules/freetype/SCsub
@@ -34,10 +34,13 @@ if (env['builtin_freetype'] != 'no'):
"src/base/fttype1.c",
"src/base/ftwinfnt.c",
"src/bdf/bdf.c",
+ "src/bzip2/ftbzip2.c",
"src/cache/ftcache.c",
"src/cff/cff.c",
"src/cid/type1cid.c",
"src/gxvalid/gxvalid.c",
+ "src/gzip/ftgzip.c",
+ "src/lzw/ftlzw.c",
"src/otvalid/otvalid.c",
"src/pcf/pcf.c",
"src/pfr/pfr.c",
@@ -77,6 +80,9 @@ if (env['builtin_freetype'] != 'no'):
break
if not inserted:
env.Append(LIBS=[lib])
+ env.Append(CCFLAGS=['-DFT2_BUILD_LIBRARY'])
+ if (env['target'] != 'release'):
+ env.Append(CCFLAGS=['-DZLIB_DEBUG'])
# Godot source files
env.add_source_files(env.modules_sources, "*.cpp")
diff --git a/modules/gdnative/gdnative.cpp b/modules/gdnative/gdnative.cpp
index 9c8625c1e0..706b81f7a3 100644
--- a/modules/gdnative/gdnative.cpp
+++ b/modules/gdnative/gdnative.cpp
@@ -516,9 +516,9 @@ static const char *_dl_platforms_info[] = {
"unix|server|so|Server",
"unix|android|so|Android",
"unix|haiku|so|Haiku", // Right?
- "|mac|dynlib|Mac",
- "mac|ios|dynlib|iOS",
- "mac|osx|dynlib|OSX",
+ "|mac|dylib|Mac",
+ "mac|ios|dylib|iOS",
+ "mac|osx|dylib|OSX",
"|html5|js|HTML5",
"|windows|dll|Windows",
"windows|uwp|dll|UWP",
diff --git a/modules/gdnative/godot.h b/modules/gdnative/godot.h
index 726bde0b65..1d86998291 100644
--- a/modules/gdnative/godot.h
+++ b/modules/gdnative/godot.h
@@ -60,6 +60,13 @@ extern "C" {
#define GDAPI GDCALLINGCONV
#endif
+// This is for libraries *using* the header, NOT GODOT EXPOSING STUFF!!
+#ifdef _WIN32
+#define GDN_EXPORT __declspec(dllexport)
+#else
+#define GDN_EXPORT
+#endif
+
#include <stdbool.h>
#include <stdint.h>
diff --git a/modules/gdscript/gd_editor.cpp b/modules/gdscript/gd_editor.cpp
index 5e3ce31dd6..adf3c8edc4 100644
--- a/modules/gdscript/gd_editor.cpp
+++ b/modules/gdscript/gd_editor.cpp
@@ -1276,7 +1276,7 @@ static void _find_identifiers_in_class(GDCompletionContext &context, bool p_stat
}
}
List<MethodInfo> methods;
- ClassDB::get_method_list(type, &methods);
+ ClassDB::get_method_list(type, &methods, false, true);
for (List<MethodInfo>::Element *E = methods.front(); E; E = E->next()) {
if (E->get().name.begins_with("_"))
continue;
@@ -1643,7 +1643,7 @@ static void _find_type_arguments(GDCompletionContext &context, const GDParser::N
} else {
//regular method
- if (p_method.operator String() == "connect") {
+ if (p_method.operator String() == "connect" || (p_method.operator String() == "emit_signal" && p_argidx == 0)) {
if (p_argidx == 0) {
List<MethodInfo> sigs;
@@ -2251,7 +2251,7 @@ Error GDScriptLanguage::complete_code(const String &p_code, const String &p_base
}
List<MethodInfo> mi;
- ClassDB::get_method_list(t.obj_type, &mi);
+ ClassDB::get_method_list(t.obj_type, &mi, false, true);
for (List<MethodInfo>::Element *E = mi.front(); E; E = E->next()) {
if (E->get().name.begins_with("_"))
diff --git a/modules/gdscript/gd_parser.cpp b/modules/gdscript/gd_parser.cpp
index d64cd86de6..75029a020b 100644
--- a/modules/gdscript/gd_parser.cpp
+++ b/modules/gdscript/gd_parser.cpp
@@ -2626,7 +2626,7 @@ void GDParser::_parse_block(BlockNode *p_block, bool p_static) {
ConstantNode *cn = alloc_node<ConstantNode>();
switch (args.size()) {
- case 1: cn->value = constants[0]; break;
+ case 1: cn->value = (int)constants[0]; break;
case 2: cn->value = Vector2(constants[0], constants[1]); break;
case 3: cn->value = Vector3(constants[0], constants[1], constants[2]); break;
}
@@ -2639,7 +2639,7 @@ void GDParser::_parse_block(BlockNode *p_block, bool p_static) {
on->arguments.push_back(tn);
switch (args.size()) {
- case 1: tn->vtype = Variant::REAL; break;
+ case 1: tn->vtype = Variant::INT; break;
case 2: tn->vtype = Variant::VECTOR2; break;
case 3: tn->vtype = Variant::VECTOR3; break;
}
diff --git a/modules/regex/regex.cpp b/modules/regex/regex.cpp
index eb9f1d2ab1..c3e97e357d 100644
--- a/modules/regex/regex.cpp
+++ b/modules/regex/regex.cpp
@@ -590,6 +590,11 @@ struct RegExNodeGroup : public RegExNode {
memdelete(childset[i]);
}
+ virtual void test_success(RegExSearch &s, int pos) const {
+
+ return;
+ }
+
virtual int test(RegExSearch &s, int pos) const {
for (int i = 0; i < childset.size(); ++i) {
@@ -598,10 +603,8 @@ struct RegExNodeGroup : public RegExNode {
int res = childset[i]->test(s, pos);
- if (s.complete)
- return res;
-
if (inverse) {
+ s.complete = false;
if (res < 0)
res = pos + 1;
else
@@ -611,9 +614,13 @@ struct RegExNodeGroup : public RegExNode {
continue;
}
+ if (s.complete)
+ return res;
+
if (res >= 0) {
if (reset_pos)
res = pos;
+ this->test_success(s, res);
return next ? next->test(s, res) : res;
}
}
@@ -668,6 +675,12 @@ struct RegExNodeCapturing : public RegExNodeGroup {
id = p_id;
}
+ virtual void test_success(RegExSearch &s, int pos) const {
+
+ RegExMatch::Group &ref = s.match->captures[id];
+ ref.length = pos - ref.start;
+ }
+
virtual int test(RegExSearch &s, int pos) const {
RegExMatch::Group &ref = s.match->captures[id];
@@ -676,13 +689,8 @@ struct RegExNodeCapturing : public RegExNodeGroup {
int res = RegExNodeGroup::test(s, pos);
- if (res >= 0) {
- if (!s.complete)
- ref.length = res - pos;
- } else {
+ if (res < 0)
ref.start = old_start;
- }
-
return res;
}
@@ -1488,7 +1496,7 @@ void RegEx::_bind_methods() {
ClassDB::bind_method(D_METHOD("clear"), &RegEx::clear);
ClassDB::bind_method(D_METHOD("compile", "pattern"), &RegEx::compile);
- ClassDB::bind_method(D_METHOD("search", "text", "start", "end"), &RegEx::search, DEFVAL(0), DEFVAL(-1));
+ ClassDB::bind_method(D_METHOD("search:RegExMatch", "text", "start", "end"), &RegEx::search, DEFVAL(0), DEFVAL(-1));
ClassDB::bind_method(D_METHOD("sub", "text", "replacement", "all", "start", "end"), &RegEx::sub, DEFVAL(false), DEFVAL(0), DEFVAL(-1));
ClassDB::bind_method(D_METHOD("is_valid"), &RegEx::is_valid);
ClassDB::bind_method(D_METHOD("get_pattern"), &RegEx::get_pattern);
diff --git a/modules/squish/image_compress_squish.cpp b/modules/squish/image_compress_squish.cpp
index 32772e0cd2..efce76c805 100644
--- a/modules/squish/image_compress_squish.cpp
+++ b/modules/squish/image_compress_squish.cpp
@@ -80,7 +80,7 @@ void image_decompress_squish(Image *p_image) {
p_image->create(p_image->get_width(), p_image->get_height(), p_image->has_mipmaps(), target_format, data);
}
-void image_compress_squish(Image *p_image, bool p_srgb) {
+void image_compress_squish(Image *p_image, Image::CompressSource p_source) {
if (p_image->get_format() >= Image::FORMAT_DXT1)
return; //do not compress, already compressed
@@ -97,11 +97,16 @@ void image_compress_squish(Image *p_image, bool p_srgb) {
p_image->convert(Image::FORMAT_RGBA8); //still uses RGBA to convert
- if (p_srgb && (dc == Image::DETECTED_R || dc == Image::DETECTED_RG)) {
+ if (p_source == Image::COMPRESS_SOURCE_SRGB && (dc == Image::DETECTED_R || dc == Image::DETECTED_RG)) {
//R and RG do not support SRGB
dc = Image::DETECTED_RGB;
}
+ if (p_source == Image::COMPRESS_SOURCE_NORMAL) {
+ //R and RG do not support SRGB
+ dc = Image::DETECTED_RG;
+ }
+
switch (dc) {
case Image::DETECTED_L: {
diff --git a/modules/squish/image_compress_squish.h b/modules/squish/image_compress_squish.h
index 8d859b8e0b..68aaeefc30 100644
--- a/modules/squish/image_compress_squish.h
+++ b/modules/squish/image_compress_squish.h
@@ -32,7 +32,7 @@
#include "image.h"
-void image_compress_squish(Image *p_image, bool p_srgb);
+void image_compress_squish(Image *p_image, Image::CompressSource p_source);
void image_decompress_squish(Image *p_image);
#endif // IMAGE_COMPRESS_SQUISH_H
diff --git a/modules/stb_vorbis/audio_stream_ogg_vorbis.h b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
index 287aa4ca47..46cdfd3f2d 100644
--- a/modules/stb_vorbis/audio_stream_ogg_vorbis.h
+++ b/modules/stb_vorbis/audio_stream_ogg_vorbis.h
@@ -77,7 +77,7 @@ class AudioStreamOGGVorbis : public AudioStream {
GDCLASS(AudioStreamOGGVorbis, AudioStream)
OBJ_SAVE_TYPE(AudioStream) //children are all saved as AudioStream, so they can be exchanged
- RES_BASE_EXTENSION("asogg");
+ RES_BASE_EXTENSION("oggstr");
friend class AudioStreamPlaybackOGGVorbis;
diff --git a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
index 9a3d5c2651..f0a7ee1ec6 100644
--- a/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
+++ b/modules/stb_vorbis/resource_importer_ogg_vorbis.cpp
@@ -48,7 +48,7 @@ void ResourceImporterOGGVorbis::get_recognized_extensions(List<String> *p_extens
}
String ResourceImporterOGGVorbis::get_save_extension() const {
- return "asogg";
+ return "oggstr";
}
String ResourceImporterOGGVorbis::get_resource_type() const {
@@ -99,7 +99,7 @@ Error ResourceImporterOGGVorbis::import(const String &p_source_file, const Strin
ogg_stream->set_data(data);
ogg_stream->set_loop(loop);
- return ResourceSaver::save(p_save_path + ".asogg", ogg_stream);
+ return ResourceSaver::save(p_save_path + ".oggstr", ogg_stream);
}
ResourceImporterOGGVorbis::ResourceImporterOGGVorbis() {