Dev settings for using ScriptCore as either dll or csproj

This commit is contained in:
Simon Lübeß
2025-08-09 23:40:31 +02:00
parent d002dfe25e
commit b94b2afc55
9 changed files with 88 additions and 22 deletions
+11 -2
View File
@@ -63,8 +63,6 @@ namespace GlitchyEditor
RenderTargetGroup _editorViewportTarget ~ _.ReleaseRef();
RenderTargetGroup _gameViewportTarget ~ _.ReleaseRef();
ProjectUserSettings _projectUserSettings;
EditorCamera _camera ~ _.Dispose();
EditorIcons _editorIcons ~ _.ReleaseRef();
@@ -1549,6 +1547,7 @@ namespace GlitchyEditor
dispatcher.Dispatch<KeyPressedEvent>(scope (e) => OnKeyPressed(e));
dispatcher.Dispatch<MouseScrolledEvent>(scope (e) => OnMouseScrolled(e));
dispatcher.Dispatch<DragDropEvent>(scope (e) => OnDragDrop(e));
dispatcher.Dispatch<SettingsAppliedEvent>(scope (e) => OnSettingsApplied(e));
}
private bool OnWindowResize(WindowResizeEvent e)
@@ -1726,5 +1725,15 @@ namespace GlitchyEditor
}
#endregion
bool OnSettingsApplied(SettingsAppliedEvent settingsAppliedEvent)
{
#if DEBUG
// In DEBUG we can change whether we use ScriptCore as .dll or .csproj
_currentProject?.FixupScriptCorePath();
#endif
return false;
}
}
}
+22
View File
@@ -10,6 +10,11 @@ namespace GlitchyEngine
{
extension Settings
{
#if DEBUG
[SettingContainer, BonInclude]
public readonly DevSettings DevSettings = new .() ~ delete _;
#endif
[SettingContainer, BonInclude]
public readonly EditorSettings EditorSettings = new .() ~ delete _;
@@ -18,6 +23,9 @@ namespace GlitchyEngine
protected override void RegisterEventListeners()
{
#if DEBUG
OnApplySettings.Add(new (s, e) => DevSettings.Apply());
#endif
OnApplySettings.Add(new (s, e) => EditorSettings.Apply());
OnApplySettings.Add(new (s, e) => ScriptSettings.Apply());
}
@@ -26,6 +34,20 @@ namespace GlitchyEngine
namespace GlitchyEditor;
#if DEBUG
[Reflect]
class DevSettings
{
[Setting("Dev", "Use ScriptCore csproj", "If enabled the Editor will include the csproj of the ScriptCore instead of the compiled dll."), BonInclude]
public bool UseScriptCoreDll = true;
public void Apply()
{
}
}
#endif
[Reflect]
enum ScriptIde
{
+21 -18
View File
@@ -71,6 +71,13 @@ class Project
{
PathInProject(outTarget, scope $"{Name}.csproj");
}
private static void GetScriptCoreProjectFilePath(String outTarget)
{
Directory.GetCurrentDirectory(outTarget);
Path.Combine(outTarget, "../ScriptCore/ScriptCore.csproj");
Path.ToActualPath(outTarget);
}
/// Loads or creates the user specific settings for this project.
private void InitUserSettings()
@@ -266,21 +273,8 @@ class Project
return project;
}
#if DEBUG
static bool referenceScriptCoreProject = true;
#else
static bool referenceScriptCoreProject = false;
#endif
private static void GetScriptCoreProjectFilePath(String outTarget)
{
Directory.GetCurrentDirectory(outTarget);
Path.Combine(outTarget, "../ScriptCore/ScriptCore.csproj");
}
/// If necessary adds or removes the reference to ScriptCore.csproj from the solution (.slnx) file.
private Result<void> FixupScriptSolutionFile()
private Result<void> FixupScriptSolutionFile(bool referenceScriptCoreProject)
{
String solutionPath = scope .();
GetPathToScriptSolutionFile(solutionPath);
@@ -345,7 +339,7 @@ class Project
}
/// If necessary adds or removes the reference to ScriptCore.dll from the project (.csproj) file.
private Result<void> FixupScriptProjectFile()
private Result<void> FixupScriptProjectFile(bool referenceScriptCoreProject)
{
String csprojPath = scope .();
GetPathToScriptProjectFile(csprojPath);
@@ -401,6 +395,7 @@ class Project
String scriptCoreProjectPath = scope .();
Directory.GetCurrentDirectory(scriptCoreProjectPath);
Path.Combine(scriptCoreProjectPath, "../ScriptCore/ScriptCore.csproj");
Path.ToActualPath(scriptCoreProjectPath);
scriptCoreProjectReference.SetAttribute("Include", scriptCoreProjectPath);
scriptCoreProjectReference.SetAttribute("OutputItemType", "Analyzer");
@@ -437,6 +432,7 @@ class Project
String pathToScriptCoreDll = scope .();
Directory.GetCurrentDirectory(pathToScriptCoreDll);
Path.Combine(pathToScriptCoreDll, ScriptEngine.ScriptCorePath);
Path.ToActualPath(pathToScriptCoreDll);
if (!File.Exists(pathToScriptCoreDll))
{
@@ -459,11 +455,18 @@ class Project
return .Ok;
}
private Result<void> FixupScriptCorePath()
/// Fixes the references to ScriptCore in the script-project and solution file.
public Result<void> FixupScriptCorePath()
{
Try!(FixupScriptSolutionFile());
bool referenceScriptCoreProject = false;
Try!(FixupScriptProjectFile());
#if DEBUG
Settings settings = Application.Instance.Settings;
referenceScriptCoreProject = settings.DevSettings.UseScriptCoreDll;
#endif
Try!(FixupScriptSolutionFile(referenceScriptCoreProject));
Try!(FixupScriptProjectFile(referenceScriptCoreProject));
return .Ok;
}
+1 -1
View File
@@ -59,7 +59,7 @@ namespace GlitchyEditor
{
_open = false;
_settings = Application.Get().Settings;
_settings = Application.Instance.Settings;
Create();
}