Skip to content

Commit 1d7b2b4

Browse files
author
Unity Technologies
committed
Unity 6000.0.3f1 C# reference source code
1 parent bf78020 commit 1d7b2b4

File tree

92 files changed

+1718
-1395
lines changed

Some content is hidden

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

92 files changed

+1718
-1395
lines changed

Editor/Mono/Audio/AudioContainerWindow.cs

Lines changed: 29 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -20,11 +20,6 @@ namespace UnityEditor;
2020

2121
sealed class AudioContainerWindow : EditorWindow
2222
{
23-
/// <summary>
24-
/// The cached instance of the window, if it is open.
25-
/// </summary>
26-
internal static AudioContainerWindow Instance { get; private set; }
27-
2823
internal readonly AudioContainerWindowState State = new();
2924

3025
/// <summary>
@@ -121,15 +116,13 @@ static void OnCreateButtonClicked()
121116

122117
void OnEnable()
123118
{
124-
Instance = this;
125119
m_DiceIconOff = EditorGUIUtility.IconContent("AudioRandomContainer On Icon").image as Texture2D;
126120
m_DiceIconOn = EditorGUIUtility.IconContent("AudioRandomContainer Icon").image as Texture2D;
127121
SetTitle();
128122
}
129123

130124
void OnDisable()
131125
{
132-
Instance = null;
133126
State.OnDestroy();
134127
UnsubscribeFromGUICallbacksAndEvents();
135128
m_IsInitializing = false;
@@ -139,7 +132,7 @@ void OnDisable()
139132
m_AddedElements.Clear();
140133
}
141134

142-
private void OnFocus()
135+
void OnFocus()
143136
{
144137
if (State.AudioContainer != null)
145138
{
@@ -1365,8 +1358,18 @@ class AudioContainerModificationProcessor : AssetModificationProcessor
13651358
/// </summary>
13661359
static string[] OnWillSaveAssets(string[] paths)
13671360
{
1368-
if (Instance != null)
1369-
Instance.OnWillSaveAssets(paths);
1361+
if (HasOpenInstances<AudioContainerWindow>())
1362+
{
1363+
var window = focusedWindow as AudioContainerWindow;
1364+
1365+
if (window == null)
1366+
{
1367+
// The window is not focused, so make sure we don't focus when getting the reference here.
1368+
window = GetWindow<AudioContainerWindow>(false, null, false);
1369+
}
1370+
1371+
window.OnWillSaveAssets(paths);
1372+
}
13701373

13711374
return paths;
13721375
}
@@ -1381,17 +1384,25 @@ class AudioContainerPostProcessor : AssetPostprocessor
13811384
/// </summary>
13821385
static void OnPostprocessAllAssets(string[] importedAssets, string[] deletedAssets, string[] movedAssets, string[] movedFromAssets)
13831386
{
1384-
if (Instance == null)
1385-
return;
1387+
if (HasOpenInstances<AudioContainerWindow>())
1388+
{
1389+
var window = focusedWindow as AudioContainerWindow;
13861390

1387-
if (movedFromAssets.Length > 0)
1388-
Instance.OnAssetsMoved(movedFromAssets);
1391+
if (window == null)
1392+
{
1393+
// The window is not focused, so make sure we don't focus when getting the reference here.
1394+
window = GetWindow<AudioContainerWindow>(false, null, false);
1395+
}
1396+
1397+
if (movedFromAssets.Length > 0)
1398+
window.OnAssetsMoved(movedFromAssets);
13891399

1390-
if (importedAssets.Length > 0)
1391-
Instance.OnAssetsImported(importedAssets);
1400+
if (importedAssets.Length > 0)
1401+
window.OnAssetsImported(importedAssets);
13921402

1393-
if (deletedAssets.Length > 0)
1394-
Instance.OnAssetsDeleted(deletedAssets);
1403+
if (deletedAssets.Length > 0)
1404+
window.OnAssetsDeleted(deletedAssets);
1405+
}
13951406
}
13961407
}
13971408

Editor/Mono/Audio/AudioContainerWindowState.cs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
using System;
66
using UnityEditor.UIElements;
77
using UnityEngine;
8-
using UnityEngine.Assertions;
98
using UnityEngine.Audio;
109
using UnityEngine.UIElements;
1110
using Object = UnityEngine.Object;
@@ -211,7 +210,7 @@ void OnResourceChanged(SerializedProperty property)
211210
UpdateResourceTrackerElement();
212211
}
213212

214-
private void UpdateResourceTrackerElement()
213+
void UpdateResourceTrackerElement()
215214
{
216215
if (m_ResourceTrackerElement != null)
217216
{

Editor/Mono/BuildPlayerWindow.cs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,9 @@ void ActiveBuildTargetsGUI()
371371
continue;
372372

373373
// Some build targets are only compatible with specific OS
374-
if (BuildTargetDiscovery.TryGetBuildTarget(gt.defaultTarget, out IBuildTarget iBuildTarget) && !(iBuildTarget.BuildPlatformProperties?.CanBuildOnCurrentHostPlatform ?? true))
374+
#pragma warning disable CS0618 // Member is obsolete
375+
if (!BuildTargetDiscovery.BuildPlatformIsAvailableOnHostPlatform(gt.defaultTarget, SystemInfo.operatingSystemFamily))
376+
#pragma warning restore CS0618
375377
continue;
376378

377379
GUI.contentColor = gt.installed ? Color.white : new Color(1, 1, 1, 0.5f);

Editor/Mono/BuildProfile/BuildProfileContext.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -267,12 +267,8 @@ internal List<string> GetMissingKnownPlatformModules()
267267
if (BuildProfileModuleUtil.IsModuleInstalled(key))
268268
continue;
269269

270-
// Some build targets are only compatible with specific OS,
271-
// from BuildPlayerWindow.ActiveBuildTargetsGUI()
272-
var buildTarget = BuildProfileModuleUtil.GetBuildTargetAndSubtarget(key).Item1;
273-
var iBuildTarget = ModuleManager.GetIBuildTarget(buildTarget);
274-
if (iBuildTarget != null
275-
&& !(iBuildTarget.BuildPlatformProperties?.CanBuildOnCurrentHostPlatform ?? true))
270+
// Some build targets are only compatible with specific OS
271+
if (!BuildTargetDiscovery.BuildPlatformIsAvailableOnHostPlatform(new GUID(key), SystemInfo.operatingSystemFamily))
276272
continue;
277273

278274
missingPlatforms.Add(key);
@@ -281,6 +277,15 @@ internal List<string> GetMissingKnownPlatformModules()
281277
return missingPlatforms;
282278
}
283279

280+
/// <summary>
281+
/// Check if there's an active build profile with player settings
282+
/// </summary>
283+
static internal bool ProjectHasActiveProfileWithPlayerSettings()
284+
{
285+
var activeBuildProfile = BuildProfile.GetActiveBuildProfile();
286+
return activeBuildProfile?.playerSettings != null;
287+
}
288+
284289
/// <summary>
285290
/// Sync the active build profile to EditorUserBuildSettings to ensure they are in a consistent state.
286291
/// </summary>

Editor/Mono/BuildProfile/BuildProfileModuleUtil.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -230,9 +230,10 @@ internal static BuildPlayerOptions GetBuildPlayerOptionsFromActiveProfile(string
230230
if (activeProfile == null)
231231
throw new ArgumentException("Active build profile is null.");
232232

233-
BuildTarget buildTarget = activeProfile.buildTarget;
234-
BuildTargetGroup buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget);
235-
int subtarget = EditorUserBuildSettings.GetActiveSubtargetFor(buildTarget);
233+
var buildTarget = activeProfile.buildTarget;
234+
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget);
235+
int subtarget = IsStandalonePlatform(buildTarget) ?
236+
(int)activeProfile.subtarget : EditorUserBuildSettings.GetActiveSubtargetFor(buildTarget);
236237

237238
options.options = GetBuildOptions(buildTarget, buildTargetGroup, buildLocation, customBuildOptions);
238239
options.target = buildTarget;

Editor/Mono/BuildTargetDiscovery.bindings.cs

Lines changed: 43 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,7 @@ public static bool TryGetBuildTarget(BuildTarget platform, out IBuildTarget buil
120120
return buildTarget != null;
121121
}
122122

123-
public static bool TryGetProperties<T>(BuildTarget platform, out T properties) where T: IPlatformProperties
123+
public static bool TryGetProperties<T>(BuildTarget platform, out T properties) where T : IPlatformProperties
124124
{
125125
if (TryGetBuildTarget(platform, out var buildTarget))
126126
{
@@ -255,6 +255,24 @@ internal static bool DoesBuildTargetSupportSinglePassStereoRendering(BuildTarget
255255
s_platform_102,
256256
};
257257

258+
static GUID[] WindowsARM64BuildTargets { get; } = new GUID[]
259+
{
260+
s_platform_02,
261+
s_platform_05,
262+
s_platform_09,
263+
s_platform_13,
264+
s_platform_20,
265+
s_platform_21,
266+
s_platform_24,
267+
s_platform_37,
268+
s_platform_41,
269+
s_platform_46,
270+
s_platform_47,
271+
s_platform_100,
272+
s_platform_101,
273+
s_platform_102,
274+
};
275+
258276
static GUID[] MacBuildTargets { get; } = new GUID[]
259277
{
260278
s_platform_02,
@@ -490,7 +508,7 @@ static BuildTargetDiscovery()
490508

491509
public static GUID GetGUIDFromBuildTarget(BuildTarget buildTarget)
492510
{
493-
if(s_PlatformGUIDData.TryGetValue(buildTarget, out GUID value))
511+
if (s_PlatformGUIDData.TryGetValue(buildTarget, out GUID value))
494512
return value;
495513

496514
return new GUID("");
@@ -615,53 +633,40 @@ public static bool BuildPlatformIsInstalled(GUID platformGuid)
615633
}
616634

617635
[System.Obsolete("BuildPlatformIsAvailableOnHostPlatform(BuildTarget) is obsolete. Use BuildPlatformIsAvailableOnHostPlatform(IBuildTarget) instead.", false)]
636+
public static bool BuildPlatformIsAvailableOnHostPlatform(BuildTarget platform, UnityEngine.OperatingSystemFamily hostPlatform) => BuildPlatformIsAvailableOnHostPlatform(GetGUIDFromBuildTarget(platform), hostPlatform);
637+
public static bool BuildPlatformIsAvailableOnHostPlatform(IBuildTarget platform, UnityEngine.OperatingSystemFamily hostPlatform) => BuildPlatformIsAvailableOnHostPlatform(platform.Guid, hostPlatform);
618638

619-
public static bool BuildPlatformIsAvailableOnHostPlatform(BuildTarget platform, UnityEngine.OperatingSystemFamily hostPlatform)
639+
public static bool BuildPlatformIsAvailableOnHostPlatform(GUID platformGuid, UnityEngine.OperatingSystemFamily hostPlatform)
620640
{
621-
var platformGuid = GetGUIDFromBuildTarget(platform);
641+
var platformTargetArray = WindowsBuildTargets;
622642

623-
if (hostPlatform == UnityEngine.OperatingSystemFamily.Windows)
624-
{
625-
foreach (var winTarget in WindowsBuildTargets)
626-
if (winTarget == platformGuid)
627-
return true;
628-
}
643+
if (hostPlatform == UnityEngine.OperatingSystemFamily.Windows && IsWindowsArm64Architecture())
644+
platformTargetArray = WindowsARM64BuildTargets;
629645
else if (hostPlatform == UnityEngine.OperatingSystemFamily.MacOSX)
630-
{
631-
foreach (var macTarget in MacBuildTargets)
632-
if (macTarget == platformGuid)
633-
return true;
634-
}
646+
platformTargetArray = MacBuildTargets;
635647
else if (hostPlatform == UnityEngine.OperatingSystemFamily.Linux)
636-
{
637-
foreach (var linuxTarget in LinuxBuildTargets)
638-
if (linuxTarget == platformGuid)
639-
return true;
640-
}
648+
platformTargetArray = LinuxBuildTargets;
649+
650+
foreach (var platformTarget in platformTargetArray)
651+
if (platformTarget == platformGuid)
652+
return true;
653+
641654
return false;
642655
}
643-
public static bool BuildPlatformIsAvailableOnHostPlatform(IBuildTarget platform, UnityEngine.OperatingSystemFamily hostPlatform)
644-
{
645-
// TODO: PLAT-8695 - Consoles are available only on x64 Windows. They can't build on Arm64. Windows.x64 and arm64 have different compability in platforms
646-
if (hostPlatform == UnityEngine.OperatingSystemFamily.Windows)
647-
foreach (var winTarget in WindowsBuildTargets)
648-
if (winTarget == platform.Guid)
649-
return true;
650-
651-
else if(hostPlatform == UnityEngine.OperatingSystemFamily.MacOSX)
652-
foreach (var macTarget in MacBuildTargets)
653-
if (macTarget == platform.Guid)
654-
return true;
655656

656-
else if (hostPlatform == UnityEngine.OperatingSystemFamily.Linux)
657-
foreach (var linuxTarget in LinuxBuildTargets)
658-
if (linuxTarget == platform.Guid)
659-
return true;
657+
static bool IsWindowsArm64Architecture()
658+
{
659+
// Based on WindowsUtility.GetHostOSArchitecture() in platform dependent code
660+
// We can't use RuntimeInformation.OSArchitecture because it doesn't work on emulations
661+
var architecture = Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE", EnvironmentVariableTarget.Machine);
662+
if (string.IsNullOrEmpty(architecture))
663+
return false;
660664

661-
return false;
665+
architecture = architecture.ToLowerInvariant();
666+
return architecture.Contains("arm64") || architecture.Contains("aarch64");
662667
}
663-
[System.Obsolete("BuildPlatformCanBeInstalledWithHub(BuildTarget) is obsolete. Use BuildPlatformCanBeInstalledWithHub(IBuildTarget) instead.", false)]
664668

669+
[System.Obsolete("BuildPlatformCanBeInstalledWithHub(BuildTarget) is obsolete. Use BuildPlatformCanBeInstalledWithHub(IBuildTarget) instead.", false)]
665670
public static bool BuildPlatformCanBeInstalledWithHub(BuildTarget platform)
666671
{
667672
foreach (var target in ExternalDownloadForBuildTarget)

Editor/Mono/CustomEditorAttributes.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ static int SortUnityTypesFirst(MonoEditorType typeA, MonoEditorType typeB)
320320
var yAssemblyIsUnity = InternalEditorUtility.IsUnityAssembly(typeB.inspectorType);
321321

322322
if (xAssemblyIsUnity == yAssemblyIsUnity)
323-
return 0;
323+
return string.CompareOrdinal(typeA.inspectorType.FullName, typeB.inspectorType.FullName);
324324
if (xAssemblyIsUnity)
325325
return 1;
326326
return -1;

0 commit comments

Comments
 (0)