Merge pull request #78220 from raulsntos/dotnet/reserved-assembly-name-3.x
[3.x] C#: Avoid GodotSharp as project assembly name
This commit is contained in:
commit
9ba9a41766
@ -47,9 +47,6 @@
|
||||
<member name="process_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="false">
|
||||
If [code]true[/code], the parent's [method Node._process] will be stopped.
|
||||
</member>
|
||||
<member name="visibility_parent" type="bool" setter="set_enabler" getter="is_enabler_enabled" default="true">
|
||||
If [code]true[/code] and the parent is a [CanvasItem], the parent will be hidden.
|
||||
</member>
|
||||
</members>
|
||||
<constants>
|
||||
<constant name="ENABLER_PAUSE_ANIMATIONS" value="0" enum="Enabler">
|
||||
@ -70,9 +67,7 @@
|
||||
<constant name="ENABLER_PAUSE_ANIMATED_SPRITES" value="5" enum="Enabler">
|
||||
This enabler will stop [AnimatedSprite] nodes animations.
|
||||
</constant>
|
||||
<constant name="ENABLER_PARENT_VISIBILITY" value="6" enum="Enabler">
|
||||
</constant>
|
||||
<constant name="ENABLER_MAX" value="7" enum="Enabler">
|
||||
<constant name="ENABLER_MAX" value="6" enum="Enabler">
|
||||
Represents the size of the [enum Enabler] enum.
|
||||
</constant>
|
||||
</constants>
|
||||
|
@ -59,6 +59,7 @@
|
||||
#include "mono_gd/gd_mono_utils.h"
|
||||
#include "signal_awaiter_utils.h"
|
||||
#include "utils/macros.h"
|
||||
#include "utils/path_utils.h"
|
||||
#include "utils/string_utils.h"
|
||||
#include "utils/thread_local.h"
|
||||
|
||||
@ -721,16 +722,7 @@ bool CSharpLanguage::is_assembly_reloading_needed() {
|
||||
|
||||
GDMonoAssembly *proj_assembly = gdmono->get_project_assembly();
|
||||
|
||||
String appname = ProjectSettings::get_singleton()->get("application/config/name");
|
||||
String assembly_name = ProjectSettings::get_singleton()->get_setting("mono/project/assembly_name");
|
||||
|
||||
if (assembly_name.empty()) {
|
||||
String appname_safe = OS::get_singleton()->get_safe_dir_name(appname);
|
||||
if (appname_safe.empty()) {
|
||||
appname_safe = "UnnamedProject";
|
||||
}
|
||||
assembly_name = appname_safe;
|
||||
}
|
||||
String assembly_name = path::get_csharp_project_name();
|
||||
|
||||
assembly_name += ".dll";
|
||||
|
||||
|
@ -77,6 +77,12 @@ namespace GodotTools.Core
|
||||
foreach (string invalidChar in invalidChars)
|
||||
safeDirName = safeDirName.Replace(invalidChar, "-");
|
||||
|
||||
// Avoid reserved names that conflict with Godot assemblies
|
||||
if (safeDirName == "GodotSharp" || safeDirName == "GodotSharpEditor")
|
||||
{
|
||||
safeDirName += "_";
|
||||
}
|
||||
|
||||
return safeDirName;
|
||||
}
|
||||
}
|
||||
|
@ -44,6 +44,7 @@
|
||||
#endif
|
||||
|
||||
#include "mono_gd/gd_mono.h"
|
||||
#include "utils/path_utils.h"
|
||||
|
||||
namespace GodotSharpDirs {
|
||||
|
||||
@ -149,15 +150,9 @@ private:
|
||||
GLOBAL_DEF_RST("mono/project/solution_directory", "");
|
||||
GLOBAL_DEF_RST("mono/project/c#_project_directory", "");
|
||||
|
||||
String appname = ProjectSettings::get_singleton()->get("application/config/name");
|
||||
String appname_safe = OS::get_singleton()->get_safe_dir_name(appname);
|
||||
if (appname_safe.empty()) {
|
||||
appname_safe = "UnnamedProject";
|
||||
}
|
||||
|
||||
project_assembly_name = ProjectSettings::get_singleton()->get("mono/project/assembly_name");
|
||||
if (project_assembly_name.empty()) {
|
||||
project_assembly_name = appname_safe;
|
||||
project_assembly_name = path::get_csharp_project_name();
|
||||
ProjectSettings::get_singleton()->set("mono/project/assembly_name", project_assembly_name);
|
||||
}
|
||||
|
||||
|
@ -987,13 +987,7 @@ bool GDMono::_load_project_assembly() {
|
||||
if (project_assembly)
|
||||
return true;
|
||||
|
||||
String assembly_name = ProjectSettings::get_singleton()->get("mono/project/assembly_name");
|
||||
|
||||
if (assembly_name.empty()) {
|
||||
String appname = ProjectSettings::get_singleton()->get("application/config/name");
|
||||
String appname_safe = OS::get_singleton()->get_safe_dir_name(appname);
|
||||
assembly_name = appname_safe;
|
||||
}
|
||||
String assembly_name = path::get_csharp_project_name();
|
||||
|
||||
bool success = load_assembly(assembly_name, &project_assembly);
|
||||
|
||||
|
@ -208,4 +208,23 @@ String relative_to(const String &p_path, const String &p_relative_to) {
|
||||
return relative_to_impl(path_abs_norm, relative_to_abs_norm);
|
||||
}
|
||||
|
||||
String get_csharp_project_name() {
|
||||
String name = GLOBAL_GET("mono/project/assembly_name");
|
||||
if (name.empty()) {
|
||||
name = GLOBAL_GET("application/config/name");
|
||||
name = OS::get_singleton()->get_safe_dir_name(name);
|
||||
}
|
||||
|
||||
if (name.empty()) {
|
||||
name = "UnnamedProject";
|
||||
}
|
||||
|
||||
// Avoid reserved names that conflict with Godot assemblies.
|
||||
if (name == "GodotSharp" || name == "GodotSharpEditor") {
|
||||
name += "_";
|
||||
}
|
||||
|
||||
return name;
|
||||
}
|
||||
|
||||
} // namespace path
|
||||
|
@ -59,6 +59,8 @@ String realpath(const String &p_path);
|
||||
|
||||
String relative_to(const String &p_path, const String &p_relative_to);
|
||||
|
||||
String get_csharp_project_name();
|
||||
|
||||
} // namespace path
|
||||
|
||||
#endif // MONO_PATH_UTILS_H
|
||||
|
@ -168,13 +168,6 @@ void VisibilityEnabler2D::_screen_enter() {
|
||||
if (enabler[ENABLER_PARENT_PROCESS] && get_parent()) {
|
||||
get_parent()->set_process(true);
|
||||
}
|
||||
if (enabler[ENABLER_PARENT_VISIBILITY] && get_parent()) {
|
||||
CanvasItem *ci = Object::cast_to<CanvasItem>(get_parent());
|
||||
|
||||
if (ci) {
|
||||
ci->set_visible(true);
|
||||
}
|
||||
}
|
||||
|
||||
visible = true;
|
||||
}
|
||||
@ -190,13 +183,6 @@ void VisibilityEnabler2D::_screen_exit() {
|
||||
if (enabler[ENABLER_PARENT_PROCESS] && get_parent()) {
|
||||
get_parent()->set_process(false);
|
||||
}
|
||||
if (enabler[ENABLER_PARENT_VISIBILITY] && get_parent()) {
|
||||
CanvasItem *ci = Object::cast_to<CanvasItem>(get_parent());
|
||||
|
||||
if (ci) {
|
||||
ci->set_visible(false);
|
||||
}
|
||||
}
|
||||
|
||||
visible = false;
|
||||
}
|
||||
@ -279,14 +265,6 @@ void VisibilityEnabler2D::_notification(int p_what) {
|
||||
get_parent()->connect(SceneStringNames::get_singleton()->ready,
|
||||
get_parent(), "set_process", varray(false), CONNECT_REFERENCE_COUNTED);
|
||||
}
|
||||
if (enabler[ENABLER_PARENT_VISIBILITY] && get_parent()) {
|
||||
CanvasItem *ci = Object::cast_to<CanvasItem>(get_parent());
|
||||
|
||||
if (ci) {
|
||||
ci->connect(SceneStringNames::get_singleton()->ready,
|
||||
ci, "set_visible", varray(false), CONNECT_REFERENCE_COUNTED);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (p_what == NOTIFICATION_EXIT_TREE) {
|
||||
@ -377,7 +355,6 @@ void VisibilityEnabler2D::_bind_methods() {
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "pause_animated_sprites"), "set_enabler", "is_enabler_enabled", ENABLER_PAUSE_ANIMATED_SPRITES);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_PROCESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "physics_process_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_PHYSICS_PROCESS);
|
||||
ADD_PROPERTYI(PropertyInfo(Variant::BOOL, "visibility_parent"), "set_enabler", "is_enabler_enabled", ENABLER_PARENT_VISIBILITY);
|
||||
|
||||
BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATIONS);
|
||||
BIND_ENUM_CONSTANT(ENABLER_FREEZE_BODIES);
|
||||
@ -385,7 +362,6 @@ void VisibilityEnabler2D::_bind_methods() {
|
||||
BIND_ENUM_CONSTANT(ENABLER_PARENT_PROCESS);
|
||||
BIND_ENUM_CONSTANT(ENABLER_PARENT_PHYSICS_PROCESS);
|
||||
BIND_ENUM_CONSTANT(ENABLER_PAUSE_ANIMATED_SPRITES);
|
||||
BIND_ENUM_CONSTANT(ENABLER_PARENT_VISIBILITY);
|
||||
BIND_ENUM_CONSTANT(ENABLER_MAX);
|
||||
}
|
||||
|
||||
|
@ -78,7 +78,6 @@ public:
|
||||
ENABLER_PARENT_PROCESS,
|
||||
ENABLER_PARENT_PHYSICS_PROCESS,
|
||||
ENABLER_PAUSE_ANIMATED_SPRITES,
|
||||
ENABLER_PARENT_VISIBILITY,
|
||||
ENABLER_MAX
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user