Skip to content

Commit 22a9cc4

Browse files
author
Unity Technologies
committed
Unity 6000.0.0b16 C# reference source code
1 parent 750cd77 commit 22a9cc4

File tree

89 files changed

+2087
-824
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

89 files changed

+2087
-824
lines changed

Editor/Mono/Audio/AudioContainerWindow.cs

+8
Original file line numberDiff line numberDiff line change
@@ -139,6 +139,14 @@ void OnDisable()
139139
m_AddedElements.Clear();
140140
}
141141

142+
private void OnFocus()
143+
{
144+
if (State.AudioContainer != null)
145+
{
146+
UpdateTransportButtonStates();
147+
}
148+
}
149+
142150
void Update()
143151
{
144152
if (!m_IsVisible)

Editor/Mono/BuildPipeline.bindings.cs

+31
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
using UnityEditor.Scripting.ScriptCompilation;
1313
using System.Runtime.InteropServices;
1414
using UnityEditor.Build;
15+
using UnityEditor.Build.Profile;
1516
using UnityEngine.Scripting;
1617

1718
namespace UnityEditor
@@ -223,6 +224,14 @@ public struct BuildPlayerOptions
223224
public string[] extraScriptingDefines { get; set; }
224225
}
225226

227+
public struct BuildPlayerWithProfileOptions
228+
{
229+
public BuildProfile buildProfile { get; set; }
230+
public string locationPathName { get; set; }
231+
public string assetBundleManifestPath { get; set; }
232+
public BuildOptions options { get; set; }
233+
}
234+
226235
internal struct BuildPlayerDataOptions
227236
{
228237
public string[] scenes { get; set; }
@@ -276,6 +285,10 @@ public class BuildPipeline
276285
[FreeFunction(IsThreadSafe = true)]
277286
internal static extern string GetEditorTargetName();
278287

288+
[NativeHeader("Editor/Src/BuildPipeline/BuildPlayerHelpers.h")]
289+
[FreeFunction]
290+
internal static extern void ShowBuildProfileWindow();
291+
279292
[Obsolete("PushAssetDependencies has been made obsolete. Please use the new AssetBundle build system introduced in 5.0 and check BuildAssetBundles documentation for details.", true)]
280293
[FreeFunction]
281294
public static extern void PushAssetDependencies();
@@ -302,6 +315,24 @@ internal static BuildPlayerContext PreparePlayerBuild(BuildPlayerOptions buildPl
302315
return buildPlayerContext;
303316
}
304317

318+
/// <summary>
319+
/// Builds a player.
320+
/// </summary>
321+
/// <param name="buildPlayerWithProfileOptions">The BuildPlayerWithProfileOptions to be built with.</param>
322+
/// <returns>A BuildReport giving build process information.</returns>
323+
/// <exception cref="ArgumentException">Throws if build profile is null.</exception>
324+
public static BuildReport BuildPlayer(BuildPlayerWithProfileOptions buildPlayerWithProfileOptions)
325+
{
326+
var buildProfile = buildPlayerWithProfileOptions.buildProfile;
327+
if (buildProfile == null)
328+
throw new ArgumentException("Build profile is invalid.");
329+
330+
BuildProfileContext.instance.activeProfile = buildProfile;
331+
var buildPlayerOptions = BuildProfileModuleUtil.GetBuildPlayerOptionsFromActiveProfile(
332+
buildPlayerWithProfileOptions.locationPathName, buildPlayerWithProfileOptions.assetBundleManifestPath, buildPlayerWithProfileOptions.options);
333+
return BuildPlayer(buildPlayerOptions);
334+
}
335+
305336
public static BuildReport BuildPlayer(EditorBuildSettingsScene[] levels, string locationPathName, BuildTarget target, BuildOptions options)
306337
{
307338
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();

Editor/Mono/BuildPipeline/BuildPlatform.cs

+14-2
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
44

55
using UnityEngine;
6+
using System;
67
using System.Collections.Generic;
78
using DiscoveredTargetInfo = UnityEditor.BuildTargetDiscovery.DiscoveredTargetInfo;
89
using TargetAttributes = UnityEditor.BuildTargetDiscovery.TargetAttributes;
910

1011
namespace UnityEditor.Build
1112
{
1213
// All settings for a build platform.
13-
internal class BuildPlatform
14+
internal class BuildPlatform : ICloneable
1415
{
1516
// short name used for texture settings, etc.
1617
public string name;
@@ -38,13 +39,24 @@ public BuildPlatform(string locTitle, string tooltip, string iconId, NamedBuildT
3839
{
3940
this.namedBuildTarget = namedBuildTarget;
4041
name = namedBuildTarget.TargetName;
41-
m_Title = new ScalableGUIContent(locTitle, null, iconId);
42+
43+
// Workaround for some platforms which have | in their name which is also used as separator for tooltips
44+
if (locTitle.Contains("|"))
45+
m_Title = new ScalableGUIContent(locTitle.Replace("|", " "), null, iconId);
46+
else
47+
m_Title = new ScalableGUIContent(locTitle, null, iconId);
48+
4249
m_SmallTitle = new ScalableGUIContent(null, null, iconId + ".Small");
4350
this.tooltip = tooltip;
4451
this.hideInUi = hideInUi;
4552
this.defaultTarget = defaultTarget;
4653
this.installed = installed;
4754
}
55+
56+
public object Clone()
57+
{
58+
return MemberwiseClone();
59+
}
4860
}
4961

5062
internal class BuildPlatformWithSubtarget : BuildPlatform

Editor/Mono/BuildPipeline/NamedBuildTarget.cs

+20
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,26 @@ internal static NamedBuildTarget FromActiveSettings(BuildTarget target)
142142
return NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
143143
}
144144

145+
internal static NamedBuildTarget FromTargetAndSubtarget(BuildTarget target, int subtarget)
146+
{
147+
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(target);
148+
if (buildTargetGroup == BuildTargetGroup.Standalone)
149+
{
150+
var standaloneSubtarget = (StandaloneBuildSubtarget)subtarget;
151+
switch (standaloneSubtarget)
152+
{
153+
case StandaloneBuildSubtarget.Player:
154+
return NamedBuildTarget.Standalone;
155+
case StandaloneBuildSubtarget.Server:
156+
return NamedBuildTarget.Server;
157+
default:
158+
throw new ArgumentException($"'{standaloneSubtarget}' is not a valid subtarget for the Standalone build target");
159+
}
160+
}
161+
162+
return NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
163+
}
164+
145165
public static bool operator==(NamedBuildTarget lhs, NamedBuildTarget rhs)
146166
{
147167
return lhs.Equals(rhs);

Editor/Mono/BuildPlayerWindowBuildMethods.cs

+5-42
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
using UnityEditor.Connect;
1515
using UnityEditor.Profiling;
1616
using UnityEditor.Utils;
17+
using UnityEditor.Build.Profile;
1718

1819
namespace UnityEditor
1920
{
@@ -230,53 +231,15 @@ internal static BuildPlayerOptions GetBuildPlayerOptionsInternal(bool askForBuil
230231
BuildTargetGroup buildTargetGroup = EditorUserBuildSettings.selectedBuildTargetGroup;
231232
int subtarget = EditorUserBuildSettings.GetSelectedSubtargetFor(buildTarget);
232233

233-
// Pick location for the build
234-
string newLocation = "";
234+
options.options = BuildProfileModuleUtil.GetBuildOptions(buildTarget, buildTargetGroup, string.Empty, options.options);
235235

236-
//Check if Lz4 is supported for the current buildtargetgroup and enable it if need be
237-
if (PostprocessBuildPlayer.SupportsLz4Compression(buildTarget))
238-
{
239-
var compression = EditorUserBuildSettings.GetCompressionType(buildTargetGroup);
240-
if (compression < 0)
241-
compression = PostprocessBuildPlayer.GetDefaultCompression(buildTarget);
242-
if (compression == Compression.Lz4)
243-
options.options |= BuildOptions.CompressWithLz4;
244-
else if (compression == Compression.Lz4HC)
245-
options.options |= BuildOptions.CompressWithLz4HC;
246-
}
247-
248-
bool developmentBuild = EditorUserBuildSettings.development;
249-
if (developmentBuild)
250-
options.options |= BuildOptions.Development;
251-
if (EditorUserBuildSettings.allowDebugging && developmentBuild)
252-
options.options |= BuildOptions.AllowDebugging;
253-
if (EditorUserBuildSettings.symlinkSources)
254-
options.options |= BuildOptions.SymlinkSources;
255-
256-
if(BuildTargetDiscovery.TryGetBuildTarget(buildTarget, out IBuildTarget iBuildTarget))
257-
{
258-
if (EditorUserBuildSettings.connectProfiler && (developmentBuild || (iBuildTarget.PlayerConnectionPlatformProperties?.ForceAllowProfilerConnection ?? false)) )
259-
options.options |= BuildOptions.ConnectWithProfiler;
260-
}
261-
262-
if (EditorUserBuildSettings.buildWithDeepProfilingSupport && developmentBuild)
263-
options.options |= BuildOptions.EnableDeepProfilingSupport;
264-
if (EditorUserBuildSettings.buildScriptsOnly)
265-
options.options |= BuildOptions.BuildScriptsOnly;
266-
if (!string.IsNullOrEmpty(ProfilerUserSettings.customConnectionID) && developmentBuild)
267-
options.options |= BuildOptions.CustomConnectionID;
268-
269-
270-
if (IsInstallInBuildFolderOption())
271-
{
272-
options.options |= BuildOptions.InstallInBuildFolder;
273-
}
274-
else if ((options.options & BuildOptions.PatchPackage) == 0)
236+
if ((options.options & BuildOptions.InstallInBuildFolder) == 0 &&
237+
(options.options & BuildOptions.PatchPackage) == 0)
275238
{
276239
if (askForBuildLocation && !PickBuildLocation(buildTargetGroup, buildTarget, subtarget, options.options, out updateExistingBuild))
277240
throw new BuildMethodException();
278241

279-
newLocation = EditorUserBuildSettings.GetBuildLocation(buildTarget);
242+
var newLocation = EditorUserBuildSettings.GetBuildLocation(buildTarget);
280243

281244
if (newLocation.Length == 0)
282245
{

Editor/Mono/BuildProfile/BuildProfile.cs

+66-10
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
using UnityEngine;
99
using UnityEngine.Bindings;
1010
using UnityEngine.Scripting;
11+
using UnityEditor.Modules;
1112

1213
namespace UnityEditor.Build.Profile
1314
{
@@ -45,14 +46,26 @@ internal StandaloneBuildSubtarget subtarget
4546
/// <summary>
4647
/// Module name used to fetch build profiles.
4748
/// </summary>
48-
[SerializeField] string m_ModuleName;
49+
string m_ModuleName;
4950
[VisibleToOtherModules]
5051
internal string moduleName
5152
{
5253
get => m_ModuleName;
5354
set => m_ModuleName = value;
5455
}
5556

57+
/// <summary>
58+
/// Platform ID of the build profile.
59+
/// Correspond to platform GUID in <see cref="BuildTargetDiscovery"/>
60+
/// </summary>
61+
[SerializeField] string m_PlatformId;
62+
[VisibleToOtherModules]
63+
internal string platformId
64+
{
65+
get => m_PlatformId;
66+
set => m_PlatformId = value;
67+
}
68+
5669
/// <summary>
5770
/// Platform module specific build settings; e.g. AndroidBuildSettings.
5871
/// </summary>
@@ -96,7 +109,7 @@ public EditorBuildSettingsScene[] scenes
96109
/// define be deserializing the YAML file and assumes defines will be found under "m_ScriptingDefines" node.
97110
/// </remarks>
98111
[SerializeField] private string[] m_ScriptingDefines = Array.Empty<string>();
99-
[VisibleToOtherModules] internal string[] scriptingDefines
112+
public string[] scriptingDefines
100113
{
101114
get => m_ScriptingDefines;
102115
set => m_ScriptingDefines = value;
@@ -114,6 +127,12 @@ internal PlayerSettings playerSettings
114127
set { m_PlayerSettings = value; }
115128
}
116129

130+
// TODO: Return server IBuildTargets for server build profiles. (https://jira.unity3d.com/browse/PLAT-6612)
131+
/// <summary>
132+
/// Get the IBuildTarget of the build profile.
133+
/// </summary>
134+
internal IBuildTarget GetIBuildTarget() => ModuleManager.GetIBuildTarget(buildTarget);
135+
117136
/// <summary>
118137
/// Returns true if the given <see cref="BuildProfile"/> is the active profile or a classic
119138
/// profile for the EditorUserBuildSettings active build target.
@@ -128,30 +147,43 @@ internal bool IsActiveBuildProfileOrPlatform()
128147
|| !BuildProfileContext.IsClassicPlatformProfile(this))
129148
return false;
130149

131-
if (!BuildProfileModuleUtil.IsStandalonePlatform(buildTarget))
132-
return buildTarget == EditorUserBuildSettings.activeBuildTarget;
133-
134-
var profileModuleName = BuildProfileModuleUtil.GetModuleName(buildTarget);
135-
var activeModuleName = BuildProfileModuleUtil.GetModuleName(EditorUserBuildSettings.activeBuildTarget);
136-
return profileModuleName == activeModuleName && subtarget == EditorUserBuildSettings.standaloneBuildSubtarget;
150+
var activePlatformId = BuildProfileModuleUtil.GetPlatformId(
151+
EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettings.standaloneBuildSubtarget);
152+
return platformId == activePlatformId;
137153
}
138154

139155
[VisibleToOtherModules]
140156
internal bool CanBuildLocally()
141157
{
142158
// Note: A platform build profile may have a non-null value even if its module is not installed.
143159
// This scenario is true for server platform profiles, which are the same type as the standalone one.
144-
return platformBuildProfile != null && BuildProfileModuleUtil.IsModuleInstalled(moduleName, subtarget);
160+
return platformBuildProfile != null && BuildProfileModuleUtil.IsModuleInstalled(platformId);
161+
}
162+
163+
internal string GetLastRunnableBuildPathKey()
164+
{
165+
if (platformBuildProfile == null)
166+
return string.Empty;
167+
168+
var key = platformBuildProfile.GetLastRunnableBuildPathKey();
169+
if (string.IsNullOrEmpty(key) || BuildProfileContext.IsClassicPlatformProfile(this))
170+
return key;
171+
172+
string assetPath = AssetDatabase.GetAssetPath(this);
173+
return BuildProfileModuleUtil.GetLastRunnableBuildKeyFromAssetPath(assetPath, key);
145174
}
146175

147176
void OnEnable()
148177
{
178+
ValidateDataConsistency();
179+
180+
moduleName = BuildProfileModuleUtil.GetModuleName(platformId);
181+
149182
// Check if the platform support module has been installed,
150183
// and try to set an uninitialized platform settings.
151184
if (platformBuildProfile == null)
152185
TryCreatePlatformSettings();
153186

154-
CheckSceneListConsistency();
155187
onBuildProfileEnable?.Invoke(this);
156188
LoadPlayerSettings();
157189

@@ -182,6 +214,30 @@ void OnDisable()
182214
AssetDatabase.SaveAssetIfDirty(this);
183215
}
184216

217+
void ValidateDataConsistency()
218+
{
219+
// TODO: Remove migration code (https://jira.unity3d.com/browse/PLAT-8909)
220+
// Set platform ID for build profiles created before it is introduced.
221+
if (string.IsNullOrEmpty(platformId))
222+
{
223+
platformId = BuildProfileContext.IsSharedProfile(buildTarget) ?
224+
new GUID(string.Empty).ToString() : BuildProfileModuleUtil.GetPlatformId(buildTarget, subtarget);
225+
EditorUtility.SetDirty(this);
226+
}
227+
else
228+
{
229+
var (curBuildTarget, curSubtarget) = BuildProfileModuleUtil.GetBuildTargetAndSubtarget(platformId);
230+
if (buildTarget != curBuildTarget || subtarget != curSubtarget)
231+
{
232+
buildTarget = curBuildTarget;
233+
subtarget = curSubtarget;
234+
EditorUtility.SetDirty(this);
235+
}
236+
}
237+
238+
CheckSceneListConsistency();
239+
}
240+
185241
/// <summary>
186242
/// EditorBuildSettingsScene stores both path and GUID. Path can become
187243
/// invalid when scenes are moved or renamed and must be recalculated.

Editor/Mono/BuildProfile/BuildProfileCLI.cs

+17-1
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,15 @@ namespace UnityEditor.Build.Profile
1010
internal static class BuildProfileCLI
1111
{
1212
[RequiredByNativeCode]
13-
internal static void SetActiveBuildProfileFromPath(string buildProfilePath)
13+
internal static bool SetActiveBuildProfileFromPath(string buildProfilePath)
1414
{
1515
if (LoadFromPath(buildProfilePath, out BuildProfile buildProfile))
1616
{
1717
BuildProfileContext.instance.activeProfile = buildProfile;
18+
return true;
1819
}
20+
21+
return false;
1922
}
2023

2124
static bool LoadFromPath(string buildProfilePath, out BuildProfile buildProfile)
@@ -32,5 +35,18 @@ static bool LoadFromPath(string buildProfilePath, out BuildProfile buildProfile)
3235

3336
return buildProfile != null;
3437
}
38+
39+
[RequiredByNativeCode]
40+
static void BuildActiveProfileWithPath(string locationPathName)
41+
{
42+
var options = new BuildPlayerWithProfileOptions()
43+
{
44+
buildProfile = BuildProfile.GetActiveBuildProfile(),
45+
locationPathName = locationPathName,
46+
options = BuildOptions.None
47+
};
48+
49+
BuildPipeline.BuildPlayer(options);
50+
}
3551
}
3652
}

0 commit comments

Comments
 (0)