You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-12-06 17:25:19 +00:00
C#/netcore: Add base desktop game export implementation
This base implementation is still very barebones but it defines the path for how exporting will work (at least when embedding the .NET runtime). Many manual steps are still needed, which should be automatized in the future. For example, in addition to the API assemblies, now you also need to copy the GodotPlugins assembly to each game project.
This commit is contained in:
@@ -4,26 +4,36 @@ using Godot.Collections;
|
||||
using GodotTools.Internals;
|
||||
using Path = System.IO.Path;
|
||||
|
||||
#nullable enable
|
||||
|
||||
namespace GodotTools.Build
|
||||
{
|
||||
[Serializable]
|
||||
public sealed class BuildInfo : RefCounted // TODO Remove RefCounted once we have proper serialization
|
||||
public sealed partial class BuildInfo : RefCounted // TODO Remove RefCounted once we have proper serialization
|
||||
{
|
||||
public string Solution { get; }
|
||||
public string[] Targets { get; }
|
||||
public string Configuration { get; }
|
||||
public string? RuntimeIdentifier { get; }
|
||||
public string? PublishOutputDir { get; }
|
||||
public bool Restore { get; }
|
||||
public bool Rebuild { get; }
|
||||
public bool OnlyClean { get; }
|
||||
|
||||
// TODO Use List once we have proper serialization
|
||||
public Array<string> CustomProperties { get; } = new Array<string>();
|
||||
|
||||
public string LogsDirPath => Path.Combine(GodotSharpDirs.BuildLogsDirs, $"{Solution.MD5Text()}_{Configuration}");
|
||||
public string LogsDirPath =>
|
||||
Path.Combine(GodotSharpDirs.BuildLogsDirs, $"{Solution.MD5Text()}_{Configuration}");
|
||||
|
||||
public override bool Equals(object obj)
|
||||
public override bool Equals(object? obj)
|
||||
{
|
||||
if (obj is BuildInfo other)
|
||||
return other.Solution == Solution && other.Targets == Targets &&
|
||||
other.Configuration == Configuration && other.Restore == Restore &&
|
||||
other.CustomProperties == CustomProperties && other.LogsDirPath == LogsDirPath;
|
||||
return other.Solution == Solution &&
|
||||
other.Configuration == Configuration && other.RuntimeIdentifier == RuntimeIdentifier &&
|
||||
other.PublishOutputDir == PublishOutputDir && other.Restore == Restore &&
|
||||
other.Rebuild == Rebuild && other.OnlyClean == OnlyClean &&
|
||||
other.CustomProperties == CustomProperties &&
|
||||
other.LogsDirPath == LogsDirPath;
|
||||
|
||||
return false;
|
||||
}
|
||||
@@ -34,25 +44,37 @@ namespace GodotTools.Build
|
||||
{
|
||||
int hash = 17;
|
||||
hash = (hash * 29) + Solution.GetHashCode();
|
||||
hash = (hash * 29) + Targets.GetHashCode();
|
||||
hash = (hash * 29) + Configuration.GetHashCode();
|
||||
hash = (hash * 29) + (RuntimeIdentifier?.GetHashCode() ?? 0);
|
||||
hash = (hash * 29) + (PublishOutputDir?.GetHashCode() ?? 0);
|
||||
hash = (hash * 29) + Restore.GetHashCode();
|
||||
hash = (hash * 29) + Rebuild.GetHashCode();
|
||||
hash = (hash * 29) + OnlyClean.GetHashCode();
|
||||
hash = (hash * 29) + CustomProperties.GetHashCode();
|
||||
hash = (hash * 29) + LogsDirPath.GetHashCode();
|
||||
return hash;
|
||||
}
|
||||
}
|
||||
|
||||
private BuildInfo()
|
||||
{
|
||||
}
|
||||
|
||||
public BuildInfo(string solution, string[] targets, string configuration, bool restore)
|
||||
public BuildInfo(string solution, string configuration, bool restore, bool rebuild, bool onlyClean)
|
||||
{
|
||||
Solution = solution;
|
||||
Targets = targets;
|
||||
Configuration = configuration;
|
||||
Restore = restore;
|
||||
Rebuild = rebuild;
|
||||
OnlyClean = onlyClean;
|
||||
}
|
||||
|
||||
public BuildInfo(string solution, string configuration, string runtimeIdentifier,
|
||||
string publishOutputDir, bool restore, bool rebuild, bool onlyClean)
|
||||
{
|
||||
Solution = solution;
|
||||
Configuration = configuration;
|
||||
RuntimeIdentifier = runtimeIdentifier;
|
||||
PublishOutputDir = publishOutputDir;
|
||||
Restore = restore;
|
||||
Rebuild = rebuild;
|
||||
OnlyClean = onlyClean;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user