Skip to content

Commit 23bb6a2

Browse files
author
Unity Technologies
committed
Unity 6000.0.20f1 C# reference source code
1 parent d487c13 commit 23bb6a2

File tree

84 files changed

+1754
-755
lines changed

Some content is hidden

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

84 files changed

+1754
-755
lines changed

Editor/Mono/BuildPipeline.bindings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -327,7 +327,7 @@ public static BuildReport BuildPlayer(BuildPlayerWithProfileOptions buildPlayerW
327327
if (buildProfile == null)
328328
throw new ArgumentException("Build profile is invalid.");
329329

330-
BuildProfileContext.instance.activeProfile = buildProfile;
330+
BuildProfileContext.activeProfile = buildProfile;
331331
var buildPlayerOptions = BuildProfileModuleUtil.GetBuildPlayerOptionsFromActiveProfile(
332332
buildPlayerWithProfileOptions.locationPathName, buildPlayerWithProfileOptions.assetBundleManifestPath, buildPlayerWithProfileOptions.options);
333333
return BuildPlayer(buildPlayerOptions);

Editor/Mono/BuildPipeline/DesktopStandaloneBuildWindowExtension.cs

Lines changed: 0 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -259,11 +259,6 @@ protected virtual string GetCannotBuildPlayerInCurrentSetupError()
259259
protected abstract RuntimePlatform GetHostPlatform();
260260
protected abstract string GetHostPlatformName();
261261

262-
public override bool EnabledBuildAndRunButton()
263-
{
264-
return true;
265-
}
266-
267262
public override bool ShouldDrawWaitForManagedDebugger()
268263
{
269264
return true;

Editor/Mono/BuildProfile/BuildProfile.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -97,18 +97,14 @@ public EditorBuildSettingsScene[] scenes
9797
m_Scenes = value;
9898
CheckSceneListConsistency();
9999

100-
if (this == BuildProfileContext.instance.activeProfile)
100+
if (this == BuildProfileContext.activeProfile)
101101
EditorBuildSettings.SceneListChanged();
102102
}
103103
}
104104

105105
/// <summary>
106106
/// Scripting Compilation Defines used during player and editor builds.
107107
/// </summary>
108-
/// <remarks>
109-
/// <see cref="EditorUserBuildSettings.GetActiveProfileYamlScriptingDefines"/> fetches active profile
110-
/// define be deserializing the YAML file and assumes defines will be found under "m_ScriptingDefines" node.
111-
/// </remarks>
112108
[SerializeField] private string[] m_ScriptingDefines = Array.Empty<string>();
113109
public string[] scriptingDefines
114110
{
@@ -144,10 +140,10 @@ internal PlayerSettings playerSettings
144140
[VisibleToOtherModules]
145141
internal bool IsActiveBuildProfileOrPlatform()
146142
{
147-
if (BuildProfileContext.instance.activeProfile == this)
143+
if (BuildProfileContext.activeProfile == this)
148144
return true;
149145

150-
if (BuildProfileContext.instance.activeProfile is not null
146+
if (BuildProfileContext.activeProfile is not null
151147
|| !BuildProfileContext.IsClassicPlatformProfile(this))
152148
return false;
153149

@@ -190,7 +186,7 @@ void OnEnable()
190186
LoadPlayerSettings();
191187

192188
if (!EditorUserBuildSettings.isBuildProfileAvailable
193-
|| BuildProfileContext.instance.activeProfile != this)
189+
|| BuildProfileContext.activeProfile != this)
194190
return;
195191

196192
// On disk changes invoke OnEnable,
@@ -206,6 +202,9 @@ void OnEnable()
206202

207203
void OnDisable()
208204
{
205+
if (IsActiveBuildProfileOrPlatform())
206+
EditorUserBuildSettings.SetActiveProfileScriptingDefines(m_ScriptingDefines);
207+
209208
var playerSettingsDirty = EditorUtility.IsDirty(m_PlayerSettings);
210209
if (playerSettingsDirty)
211210
{

Editor/Mono/BuildProfile/BuildProfileAPI.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ public sealed partial class BuildProfile
1414
/// </returns>
1515
public static BuildProfile GetActiveBuildProfile()
1616
{
17-
return BuildProfileContext.instance.activeProfile;
17+
return BuildProfileContext.activeProfile;
1818
}
1919

2020
/// <summary>
@@ -26,7 +26,7 @@ public static BuildProfile GetActiveBuildProfile()
2626
/// </param>
2727
public static void SetActiveBuildProfile(BuildProfile buildProfile)
2828
{
29-
BuildProfileContext.instance.activeProfile = buildProfile;
29+
BuildProfileContext.activeProfile = buildProfile;
3030

3131
if (buildProfile == null)
3232
return;

Editor/Mono/BuildProfile/BuildProfileCLI.cs

Lines changed: 0 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -9,33 +9,6 @@ namespace UnityEditor.Build.Profile
99
{
1010
internal static class BuildProfileCLI
1111
{
12-
[RequiredByNativeCode]
13-
internal static bool SetActiveBuildProfileFromPath(string buildProfilePath)
14-
{
15-
if (LoadFromPath(buildProfilePath, out BuildProfile buildProfile))
16-
{
17-
BuildProfileContext.instance.activeProfile = buildProfile;
18-
return true;
19-
}
20-
21-
return false;
22-
}
23-
24-
static bool LoadFromPath(string buildProfilePath, out BuildProfile buildProfile)
25-
{
26-
if (AssetDatabase.AssetPathExists(buildProfilePath))
27-
{
28-
buildProfile = AssetDatabase.LoadAssetAtPath<BuildProfile>(buildProfilePath);
29-
}
30-
else
31-
{
32-
buildProfile = null;
33-
Debug.LogError($"Couldn't find build profile asset for path {buildProfilePath}");
34-
}
35-
36-
return buildProfile != null;
37-
}
38-
3912
[RequiredByNativeCode]
4013
static void BuildActiveProfileWithPath(string locationPathName)
4114
{

Editor/Mono/BuildProfile/BuildProfileContext.cs

Lines changed: 49 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,6 @@ internal sealed class BuildProfileContext : ScriptableObject
2828
const string k_SharedProfilePath = $"{k_BuildProfilePath}/SharedProfile.asset";
2929
static BuildProfileContext s_Instance;
3030

31-
[SerializeField]
32-
BuildProfile m_ActiveProfile;
33-
3431
[SerializeField]
3532
string[] m_CachedEditorScriptingDefines = Array.Empty<string>();
3633

@@ -64,54 +61,57 @@ internal string[] cachedEditorScriptingDefines
6461
/// perspective Classic Platform and Build Profiles are different concepts.
6562
/// </remarks>
6663
[VisibleToOtherModules]
67-
internal BuildProfile activeProfile
64+
internal static BuildProfile activeProfile
6865
{
6966
get
7067
{
7168
// Active Build profile may be deleted from the project.
72-
if (m_ActiveProfile != null && m_ActiveProfile.CanBuildLocally())
73-
return m_ActiveProfile;
69+
var activeProfile = EditorUserBuildSettings.activeBuildProfile;
70+
if (activeProfile != null && activeProfile.CanBuildLocally())
71+
return activeProfile;
7472

75-
m_ActiveProfile = null;
7673
return null;
7774
}
7875

7976
set
8077
{
81-
if (m_ActiveProfile == value)
82-
return;
78+
var prev = EditorUserBuildSettings.activeBuildProfile;
8379

84-
var prev = m_ActiveProfile;
8580
if (value == null || value.platformBuildProfile == null)
8681
{
87-
m_ActiveProfile.UpdateGlobalManagerPlayerSettings(activeWillBeRemoved: true);
88-
m_ActiveProfile = null;
89-
Save();
90-
EditorUserBuildSettings.SetBuildProfilePath(string.Empty);
91-
activeProfileChanged?.Invoke(prev, m_ActiveProfile);
82+
prev?.UpdateGlobalManagerPlayerSettings(activeWillBeRemoved: true);
83+
EditorUserBuildSettings.activeBuildProfile = null;
84+
85+
activeProfileChanged?.Invoke(prev, null);
9286
OnActiveProfileChangedForSettingExtension(prev, null);
9387
BuildProfileModuleUtil.RequestScriptCompilation(null);
9488
return;
9589
}
9690

97-
if (m_PlatformIdToClassicPlatformProfile.TryGetValue(
91+
// Only compare prev with value after the null check, as
92+
// EditorUserBuildSettings.activeBuildProfile will return null
93+
// if the build profile has been destroyed but on native side
94+
// it's still pointing to a dead pptr.
95+
if (ReferenceEquals(prev, value))
96+
return;
97+
98+
if (s_Instance != null && s_Instance.m_PlatformIdToClassicPlatformProfile.TryGetValue(
9899
value.platformId, out var entry) && entry == value)
99100
{
100101
Debug.LogWarning("[BuildProfile] Classic Platforms cannot be set as the active build profile.");
101102
return;
102103
}
103104

104-
m_ActiveProfile = value;
105-
Save();
106-
EditorUserBuildSettings.SetBuildProfilePath(AssetDatabase.GetAssetPath(m_ActiveProfile));
107-
activeProfileChanged?.Invoke(prev, m_ActiveProfile);
108-
OnActiveProfileChangedForSettingExtension(prev, m_ActiveProfile);
109-
m_ActiveProfile.UpdateGlobalManagerPlayerSettings();
110-
BuildProfileModuleUtil.RequestScriptCompilation(m_ActiveProfile);
105+
EditorUserBuildSettings.activeBuildProfile = value;
106+
107+
activeProfileChanged?.Invoke(prev, value);
108+
OnActiveProfileChangedForSettingExtension(prev, value);
109+
value.UpdateGlobalManagerPlayerSettings();
110+
BuildProfileModuleUtil.RequestScriptCompilation(value);
111111
}
112112
}
113113

114-
void OnActiveProfileChangedForSettingExtension(BuildProfile previous, BuildProfile newProfile)
114+
static void OnActiveProfileChangedForSettingExtension(BuildProfile previous, BuildProfile newProfile)
115115
{
116116
BuildTargetDiscovery.TryGetBuildTarget(EditorUserBuildSettings.activeBuildTarget, out IBuildTarget iBuildTarget);
117117
if (iBuildTarget == null)
@@ -216,7 +216,7 @@ internal static BuildProfile GetActiveOrClassicBuildProfile(
216216
BuildTarget target, StandaloneBuildSubtarget subTarget = StandaloneBuildSubtarget.Default, string sharedSetting = null)
217217
{
218218
if (ShouldReturnActiveProfile(target, subTarget, sharedSetting))
219-
return instance.activeProfile;
219+
return activeProfile;
220220

221221
// For backwards compatibility, getter will look for
222222
// the classic platform build profile for the target platform
@@ -331,8 +331,6 @@ void SyncActiveProfileToFallback()
331331
void OnDisable()
332332
{
333333
Save();
334-
EditorUserBuildSettings.SetBuildProfilePath((m_ActiveProfile != null) ?
335-
AssetDatabase.GetAssetPath(m_ActiveProfile) : string.Empty);
336334

337335
// Platform profiles must be manually serialized for changes to persist.
338336
foreach (var kvp in m_PlatformIdToClassicPlatformProfile)
@@ -405,13 +403,19 @@ void OnEnable()
405403
sharedProfile = sharedProfileObj;
406404
}
407405

408-
var buildProfile = activeProfile ?? GetForClassicPlatform(EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettings.standaloneBuildSubtarget);
406+
var buildProfile = activeProfile;
409407

410-
// profile can be null if we're in the middle of creating classic profiles
411408
if (buildProfile == null)
412-
return;
409+
{
410+
buildProfile = GetForClassicPlatform(EditorUserBuildSettings.activeBuildTarget, EditorUserBuildSettings.standaloneBuildSubtarget);
413411

414-
EditorUserBuildSettings.CopyToBuildProfile(buildProfile);
412+
// profile can be null if we're in the middle of creating classic profiles
413+
if (buildProfile == null)
414+
return;
415+
416+
// We only copy EditorUserBuildSettings into the build profile for classic platforms as we don't want to modify actual user assets
417+
EditorUserBuildSettings.CopyToBuildProfile(buildProfile);
418+
}
415419

416420
string module = BuildTargetDiscovery.GetModuleNameForBuildTarget(buildProfile.buildTarget);
417421
var extension = ModuleManager.GetBuildProfileExtension(module);
@@ -587,13 +591,11 @@ static void CreateOrLoad()
587591
System.Diagnostics.Debug.Assert(s_Instance != null);
588592
s_Instance.CheckInstalledBuildPlatforms();
589593

590-
EditorUserBuildSettings.SetBuildProfilePath((s_Instance.m_ActiveProfile != null) ?
591-
AssetDatabase.GetAssetPath(s_Instance.m_ActiveProfile) : string.Empty);
592594
s_Instance.cachedEditorScriptingDefines = BuildDefines.GetBuildProfileScriptDefines();
593595

594596
BuildProfileModuleUtil.DeleteLastRunnableBuildKeyForDeletedProfiles();
595597

596-
s_Instance.OnActiveProfileChangedForSettingExtension(null, s_Instance.m_ActiveProfile);
598+
OnActiveProfileChangedForSettingExtension(null, activeProfile);
597599
}
598600

599601
[RequiredByNativeCode, UsedImplicitly]
@@ -620,6 +622,12 @@ static void SetActiveOrClassicProfileRawPlatformSetting(string settingName, stri
620622
}
621623
}
622624

625+
[RequiredByNativeCode, UsedImplicitly]
626+
static void EnsureInitialized()
627+
{
628+
GC.KeepAlive(instance);
629+
}
630+
623631
[RequiredByNativeCode, UsedImplicitly]
624632
static string GetActiveOrClassicProfileRawPlatformSetting(string settingName, BuildTarget target, StandaloneBuildSubtarget subtarget)
625633
{
@@ -643,16 +651,17 @@ static string GetActiveOrClassicProfileRawPlatformSetting(string settingName, Bu
643651
[RequiredByNativeCode]
644652
static string GetActiveBuildProfilePath()
645653
{
646-
if (instance.activeProfile)
647-
return AssetDatabase.GetAssetPath(instance.activeProfile);
654+
var activeProfile = BuildProfileContext.activeProfile;
655+
if (activeProfile)
656+
return AssetDatabase.GetAssetPath(activeProfile);
648657

649658
return string.Empty;
650659
}
651660

652661
[RequiredByNativeCode]
653662
static bool HasActiveProfileWithPlayerSettings(out int instanceID)
654663
{
655-
var activeProfile = instance.activeProfile;
664+
var activeProfile = BuildProfileContext.activeProfile;
656665
if (activeProfile?.playerSettings != null)
657666
{
658667
instanceID = activeProfile.GetInstanceID();
@@ -666,15 +675,15 @@ static bool HasActiveProfileWithPlayerSettings(out int instanceID)
666675
[RequiredByNativeCode]
667676
static void UpdateActiveProfilePlayerSettingsObjectFromYAML()
668677
{
669-
instance.activeProfile?.UpdatePlayerSettingsObjectFromYAML();
678+
activeProfile?.UpdatePlayerSettingsObjectFromYAML();
670679
}
671680

672681
static bool ShouldReturnActiveProfile(BuildTarget buildTarget, StandaloneBuildSubtarget subtarget, string sharedSetting = null)
673682
{
674683
if (!string.IsNullOrEmpty(sharedSetting))
675684
return IsSharedSettingEnabledInActiveProfile(sharedSetting);
676685

677-
var activeProfile = instance.activeProfile;
686+
var activeProfile = BuildProfileContext.activeProfile;
678687
if (activeProfile == null || buildTarget == BuildTarget.NoTarget)
679688
return false;
680689

@@ -684,7 +693,7 @@ static bool ShouldReturnActiveProfile(BuildTarget buildTarget, StandaloneBuildSu
684693

685694
static bool IsSharedSettingEnabledInActiveProfile(string settingName)
686695
{
687-
var activeProfile = instance.activeProfile;
696+
var activeProfile = BuildProfileContext.activeProfile;
688697
if (activeProfile == null)
689698
return false;
690699

0 commit comments

Comments
 (0)