Skip to content

Commit e352b7c

Browse files
author
Unity Technologies
committed
Unity 2021.2.0a20 C# reference source code
1 parent 7699e50 commit e352b7c

File tree

175 files changed

+12963
-1764
lines changed

Some content is hidden

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

175 files changed

+12963
-1764
lines changed

Editor/Mono/AssetPipeline/AssetImporter.bindings.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
44

55
using System;
6+
using System.Linq;
67
using System.Collections.Generic;
78
using UnityEngine;
89
using Object = UnityEngine.Object;
@@ -145,5 +146,15 @@ public Dictionary<SourceAssetIdentifier, Object> GetExternalObjectMap()
145146
public extern bool SupportsRemappedAssetType(Type type);
146147

147148
internal extern double GetImportStartTime();
149+
150+
internal AssetPostprocessor.PostprocessorInfo[] GetDynamicPostprocessors()
151+
{
152+
return AssetPostprocessingInternal.GetSortedDynamicPostprocessorsForAsset(assetPath).ToArray();
153+
}
154+
155+
internal static AssetPostprocessor.PostprocessorInfo[] GetStaticPostprocessors(Type importerType)
156+
{
157+
return AssetPostprocessingInternal.GetSortedStaticPostprocessorTypes(importerType).ToArray();
158+
}
148159
}
149160
}

Editor/Mono/AssetPostprocessor.cs

Lines changed: 321 additions & 216 deletions
Large diffs are not rendered by default.

Editor/Mono/Audio/Mixer/GUI/AudioMixerEffectGUI.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ public static bool Slider(GUIContent label, ref float value, float displayScale,
7070
pm.AddItem(EditorGUIUtility.TrTextContent("SquareRoot Snapshot Transition"), existingType == ParameterTransitionType.SquareRoot, ParameterTransitionOverrideCallback, new ParameterTransitionOverrideContext(controller, path.parameter, ParameterTransitionType.SquareRoot));
7171
pm.AddItem(EditorGUIUtility.TrTextContent("BrickwallStart Snapshot Transition"), existingType == ParameterTransitionType.BrickwallStart, ParameterTransitionOverrideCallback, new ParameterTransitionOverrideContext(controller, path.parameter, ParameterTransitionType.BrickwallStart));
7272
pm.AddItem(EditorGUIUtility.TrTextContent("BrickwallEnd Snapshot Transition"), existingType == ParameterTransitionType.BrickwallEnd, ParameterTransitionOverrideCallback, new ParameterTransitionOverrideContext(controller, path.parameter, ParameterTransitionType.BrickwallEnd));
73+
pm.AddItem(EditorGUIUtility.TrTextContent("Attenuation Snapshot Transition"), existingType == ParameterTransitionType.Attenuation, ParameterTransitionOverrideCallback, new ParameterTransitionOverrideContext(controller, path.parameter, ParameterTransitionType.Attenuation));
7374
pm.AddSeparator(string.Empty);
7475

7576
pm.ShowAsContext();

Editor/Mono/BuildPipeline.bindings.cs

Lines changed: 33 additions & 27 deletions
Large diffs are not rendered by default.

Editor/Mono/BuildPipeline/BuildPlatform.cs

Lines changed: 51 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -14,26 +14,29 @@ internal class BuildPlatform
1414
{
1515
// short name used for texture settings, etc.
1616
public string name;
17-
public BuildTargetGroup targetGroup;
17+
public NamedBuildTarget namedBuildTarget;
1818
public bool forceShowTarget;
1919
public string tooltip;
2020
public BuildTarget defaultTarget;
2121

22+
// TODO: Some packages are still using targetGroup, so we keep it here as a getter for compatibility
23+
public BuildTargetGroup targetGroup => namedBuildTarget.ToBuildTargetGroup();
24+
2225
ScalableGUIContent m_Title;
2326
ScalableGUIContent m_SmallTitle;
2427

2528
public GUIContent title => m_Title;
2629
public Texture2D smallIcon => ((GUIContent)m_SmallTitle).image as Texture2D;
2730

28-
public BuildPlatform(string locTitle, string iconId, BuildTargetGroup targetGroup, BuildTarget defaultTarget, bool forceShowTarget)
29-
: this(locTitle, "", iconId, targetGroup, defaultTarget, forceShowTarget)
31+
public BuildPlatform(string locTitle, string iconId, NamedBuildTarget namedBuildTarget, BuildTarget defaultTarget, bool forceShowTarget)
32+
: this(locTitle, "", iconId, namedBuildTarget, defaultTarget, forceShowTarget)
3033
{
3134
}
3235

33-
public BuildPlatform(string locTitle, string tooltip, string iconId, BuildTargetGroup targetGroup, BuildTarget defaultTarget, bool forceShowTarget)
36+
public BuildPlatform(string locTitle, string tooltip, string iconId, NamedBuildTarget namedBuildTarget, BuildTarget defaultTarget, bool forceShowTarget)
3437
{
35-
this.targetGroup = targetGroup;
36-
name = targetGroup != BuildTargetGroup.Unknown ? BuildPipeline.GetBuildTargetGroupName(defaultTarget) : "";
38+
this.namedBuildTarget = namedBuildTarget;
39+
name = namedBuildTarget.TargetName;
3740
m_Title = new ScalableGUIContent(locTitle, null, iconId);
3841
m_SmallTitle = new ScalableGUIContent(null, null, iconId + ".Small");
3942
this.tooltip = tooltip;
@@ -42,6 +45,18 @@ public BuildPlatform(string locTitle, string tooltip, string iconId, BuildTarget
4245
}
4346
}
4447

48+
internal class BuildPlatformWithSubtarget : BuildPlatform
49+
{
50+
public int subtarget;
51+
52+
public BuildPlatformWithSubtarget(string locTitle, string tooltip, string iconId, NamedBuildTarget namedBuildTarget, BuildTarget defaultTarget, int subtarget, bool forceShowTarget)
53+
: base(locTitle, tooltip, iconId, namedBuildTarget, defaultTarget, forceShowTarget)
54+
{
55+
this.subtarget = subtarget;
56+
name = namedBuildTarget.TargetName;
57+
}
58+
}
59+
4560
internal class BuildPlatforms
4661
{
4762
static readonly BuildPlatforms s_Instance = new BuildPlatforms();
@@ -64,17 +79,21 @@ internal BuildPlatforms()
6479
else if (Application.platform == RuntimePlatform.LinuxEditor)
6580
standaloneTarget = BuildTarget.StandaloneLinux64;
6681

67-
buildPlatformsList.Add(new BuildPlatform(BuildPipeline.GetBuildTargetGroupDisplayName(BuildTargetGroup.Standalone), "BuildSettings.Standalone", BuildTargetGroup.Standalone, standaloneTarget, true));
82+
buildPlatformsList.Add(new BuildPlatformWithSubtarget(BuildPipeline.GetBuildTargetGroupDisplayName(BuildTargetGroup.Standalone), "", "BuildSettings.Standalone",
83+
NamedBuildTarget.Standalone, standaloneTarget, (int)StandaloneBuildSubtarget.Player, true));
84+
85+
buildPlatformsList.Add(new BuildPlatformWithSubtarget("Dedicated Server", "", "BuildSettings.Standalone",
86+
NamedBuildTarget.Server, standaloneTarget, (int)StandaloneBuildSubtarget.Server, true));
6887

6988
foreach (var target in buildTargets)
7089
{
7190
if (!target.HasFlag(TargetAttributes.IsStandalonePlatform))
7291
{
73-
BuildTargetGroup btg = BuildPipeline.GetBuildTargetGroup(target.buildTargetPlatformVal);
92+
NamedBuildTarget namedBuildTarget = NamedBuildTarget.FromBuildTargetGroup(BuildPipeline.GetBuildTargetGroup(target.buildTargetPlatformVal));
7493
buildPlatformsList.Add(new BuildPlatform(
75-
BuildPipeline.GetBuildTargetGroupDisplayName(btg),
94+
BuildPipeline.GetBuildTargetGroupDisplayName(namedBuildTarget.ToBuildTargetGroup()),
7695
target.iconName,
77-
btg,
96+
namedBuildTarget,
7897
target.buildTargetPlatformVal,
7998
!target.HasFlag(TargetAttributes.HideInUI)));
8099
}
@@ -90,62 +109,72 @@ internal BuildPlatforms()
90109

91110
public BuildPlatform[] buildPlatforms;
92111

93-
public string GetBuildTargetDisplayName(BuildTargetGroup group, BuildTarget target)
112+
public string GetBuildTargetDisplayName(BuildTargetGroup buildTargetGroup, BuildTarget target, int subtarget)
113+
{
114+
if (buildTargetGroup == BuildTargetGroup.Standalone && subtarget == (int)StandaloneBuildSubtarget.Server)
115+
return GetBuildTargetDisplayName(NamedBuildTarget.Server, target);
116+
117+
return GetBuildTargetDisplayName(NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup), target);
118+
}
119+
120+
public string GetBuildTargetDisplayName(NamedBuildTarget namedBuildTarget, BuildTarget target)
94121
{
95122
foreach (BuildPlatform cur in buildPlatforms)
96123
{
97-
if (cur.defaultTarget == target && cur.targetGroup == group)
124+
if (cur.defaultTarget == target && cur.namedBuildTarget == namedBuildTarget)
98125
return cur.title.text;
99126
}
100127

128+
var suffix = namedBuildTarget == NamedBuildTarget.Server ? " Server" : "";
129+
101130
switch (target)
102131
{
103132
case BuildTarget.StandaloneWindows:
104133
case BuildTarget.StandaloneWindows64:
105-
return "Windows";
134+
return $"Windows{suffix}";
106135
case BuildTarget.StandaloneOSX:
107136
// Deprecated
108137
#pragma warning disable 612, 618
109138
case BuildTarget.StandaloneOSXIntel:
110139
case BuildTarget.StandaloneOSXIntel64:
111140
#pragma warning restore 612, 618
112-
return "macOS";
141+
return $"macOS{suffix}";
113142
// Deprecated
114143
#pragma warning disable 612, 618
115144
case BuildTarget.StandaloneLinux:
116145
case BuildTarget.StandaloneLinuxUniversal:
117146
#pragma warning restore 612, 618
118147
case BuildTarget.StandaloneLinux64:
119-
return "Linux";
148+
return $"Linux{suffix}";
120149
}
121150

122151
return "Unsupported Target";
123152
}
124153

125-
public string GetModuleDisplayName(BuildTargetGroup buildTargetGroup, BuildTarget buildTarget)
154+
public string GetModuleDisplayName(NamedBuildTarget namedBuildTarget, BuildTarget buildTarget)
126155
{
127-
return GetBuildTargetDisplayName(buildTargetGroup, buildTarget);
156+
return GetBuildTargetDisplayName(namedBuildTarget, buildTarget);
128157
}
129158

130-
int BuildPlatformIndexFromTargetGroup(BuildTargetGroup group)
159+
int BuildPlatformIndexFromNamedBuildTarget(NamedBuildTarget target)
131160
{
132161
for (int i = 0; i < buildPlatforms.Length; i++)
133-
if (group == buildPlatforms[i].targetGroup)
162+
if (target == buildPlatforms[i].namedBuildTarget)
134163
return i;
135164
return -1;
136165
}
137166

138-
public BuildPlatform BuildPlatformFromTargetGroup(BuildTargetGroup group)
167+
public BuildPlatform BuildPlatformFromNamedBuildTarget(NamedBuildTarget target)
139168
{
140-
int index = BuildPlatformIndexFromTargetGroup(group);
169+
int index = BuildPlatformIndexFromNamedBuildTarget(target);
141170
return index != -1 ? buildPlatforms[index] : null;
142171
}
143172

144173
public List<BuildPlatform> GetValidPlatforms(bool includeMetaPlatforms)
145174
{
146175
List<BuildPlatform> platforms = new List<BuildPlatform>();
147176
foreach (BuildPlatform bp in buildPlatforms)
148-
if (bp.targetGroup == BuildTargetGroup.Standalone || BuildPipeline.IsBuildTargetSupported(bp.targetGroup, bp.defaultTarget))
177+
if (bp.namedBuildTarget == NamedBuildTarget.Standalone || BuildPipeline.IsBuildTargetSupported(bp.namedBuildTarget.ToBuildTargetGroup(), bp.defaultTarget))
149178
platforms.Add(bp);
150179

151180
return platforms;

Editor/Mono/BuildPipeline/DataBuildDirtyTracker.cs

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ class BuildData
4141
{
4242
public BuildDataInputFile[] scenes;
4343
public BuildDataInputFile[] inputFiles;
44+
public string[] resourcePaths;
4445
public BuildOptions buildOptions;
4546
public string unityVersion;
4647

@@ -110,6 +111,27 @@ bool DoCheckDirty()
110111
if (buildData.inputFiles.Any(CheckAssetDirty))
111112
return true;
112113

114+
var resourcePaths = ResourcesAPIInternal.GetAllPaths("").OrderBy(p => p).ToArray();
115+
if (!resourcePaths.SequenceEqual(buildData.resourcePaths))
116+
{
117+
for (int i = 0; i < resourcePaths.Length || i < buildData.resourcePaths.Length; i++)
118+
{
119+
string path;
120+
if (i >= resourcePaths.Length)
121+
path = buildData.resourcePaths[i];
122+
else if (i >= buildData.resourcePaths.Length)
123+
path = resourcePaths[i];
124+
else if (buildData.resourcePaths[i] != resourcePaths[i])
125+
path = resourcePaths[i];
126+
else
127+
continue;
128+
129+
Console.WriteLine($"Rebuiding Data files because {path} is dirty (Resource file added or removed)");
130+
return true;
131+
}
132+
}
133+
134+
113135
Console.WriteLine("Not rebuiding Data files -- no changes");
114136
return false;
115137
}
@@ -139,7 +161,8 @@ static public void WriteBuildData(string buildDataPath, BuildReport report, stri
139161
scenes = inputScenes.ToArray(),
140162
inputFiles = inputFiles.ToArray(),
141163
buildOptions = report.summary.options & BuildData.BuildOptionsMask,
142-
unityVersion = Application.unityVersion
164+
unityVersion = Application.unityVersion,
165+
resourcePaths = ResourcesAPIInternal.GetAllPaths("").OrderBy(p => p).ToArray()
143166
};
144167
buildDataPath.ToNPath().WriteAllText(JsonUtility.ToJson(buildData));
145168
}

Editor/Mono/BuildPipeline/DesktopStandaloneBuildWindowExtension.cs

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,21 +13,22 @@ internal abstract class DesktopStandaloneBuildWindowExtension : DefaultBuildWind
1313
{
1414
private GUIContent m_StandaloneTarget = EditorGUIUtility.TrTextContent("Target Platform", "Destination platform for standalone build");
1515
private GUIContent m_Architecture = EditorGUIUtility.TrTextContent("Architecture", "Build m_Architecture for standalone");
16-
private GUIContent m_HeadlessMode = EditorGUIUtility.TrTextContent("Server Build", "Headless player build tailored for server environments");
1716
private BuildTarget[] m_StandaloneSubtargets;
1817
private GUIContent[] m_StandaloneSubtargetStrings;
1918

2019
protected bool m_HasMonoPlayers;
2120
protected bool m_HasIl2CppPlayers;
21+
protected bool m_HasServerPlayers;
2222
protected bool m_IsRunningOnHostPlatform;
2323

24-
public DesktopStandaloneBuildWindowExtension(bool hasMonoPlayers, bool hasIl2CppPlayers)
24+
public DesktopStandaloneBuildWindowExtension(bool hasMonoPlayers, bool hasIl2CppPlayers, bool hasServerPlayers)
2525
{
2626
SetupStandaloneSubtargets();
2727

2828
m_IsRunningOnHostPlatform = Application.platform == GetHostPlatform();
2929
m_HasIl2CppPlayers = hasIl2CppPlayers;
3030
m_HasMonoPlayers = hasMonoPlayers;
31+
m_HasServerPlayers = hasServerPlayers;
3132
}
3233

3334
private void SetupStandaloneSubtargets()
@@ -185,8 +186,6 @@ public override void ShowPlatformBuildOptions()
185186

186187
ShowArchitectureSpecificOptions();
187188

188-
EditorUserBuildSettings.enableHeadlessMode = EditorGUILayout.Toggle(m_HeadlessMode, EditorUserBuildSettings.enableHeadlessMode);
189-
190189
ShowBackendErrorIfNeeded();
191190
}
192191

@@ -201,15 +200,17 @@ protected void ShowBackendErrorIfNeeded()
201200

202201
public override bool EnabledBuildButton()
203202
{
204-
if (PlayerSettings.GetScriptingBackend(NamedBuildTarget.Standalone) == ScriptingImplementation.Mono2x)
205-
return true;
206-
207203
return string.IsNullOrEmpty(GetCannotBuildPlayerInCurrentSetupError());
208204
}
209205

210206
protected virtual string GetCannotBuildPlayerInCurrentSetupError()
211207
{
212-
if (PlayerSettings.GetScriptingBackend(NamedBuildTarget.Standalone) != ScriptingImplementation.IL2CPP)
208+
var namedBuildTarget = EditorUserBuildSettingsUtils.CalculateSelectedNamedBuildTarget();
209+
210+
if (namedBuildTarget == NamedBuildTarget.Server && !m_HasServerPlayers)
211+
return $"Dedicated Server support for {GetHostPlatformName()} is not installed";
212+
213+
if (PlayerSettings.GetScriptingBackend(namedBuildTarget) != ScriptingImplementation.IL2CPP)
213214
{
214215
if (!m_HasMonoPlayers)
215216
return "Currently selected scripting backend (Mono) is not installed.";
@@ -219,7 +220,8 @@ protected virtual string GetCannotBuildPlayerInCurrentSetupError()
219220
if (!m_IsRunningOnHostPlatform)
220221
return string.Format("{0} IL2CPP player can only be built on {0}.", GetHostPlatformName());
221222

222-
if (!m_HasIl2CppPlayers)
223+
// Il2cpp is always shipped in the Server support installer for the host platform.
224+
if (!m_HasIl2CppPlayers && namedBuildTarget != NamedBuildTarget.Server)
223225
return "Currently selected scripting backend (IL2CPP) is not installed."; // Note: error should match UWP player error message for consistency.
224226
}
225227

Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -92,11 +92,6 @@ public static void UpdateBootConfigStatic(BuildTarget target, BootConfigData con
9292
config.AddKey("force-d3d11-bltblt-mode");
9393
if (IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(BuildPipeline.GetBuildTargetGroup(target)))
9494
config.Set("mono-codegen", "il2cpp");
95-
if ((options & BuildOptions.EnableHeadlessMode) != 0)
96-
{
97-
config.AddKey("headless");
98-
config.AddKey("force-gfx-direct");
99-
}
10095
if ((options & BuildOptions.EnableCodeCoverage) != 0)
10196
config.Set("enableCodeCoverage", "1");
10297
if (!PlayerSettings.usePlayerLog)
@@ -549,9 +544,13 @@ protected static bool GetDevelopment(BuildPostProcessArgs args)
549544
return ((args.options & BuildOptions.Development) != 0);
550545
}
551546

552-
protected static bool IsServerBuild(BuildPostProcessArgs args)
547+
protected static bool GetServer(BuildPostProcessArgs args)
553548
{
554-
return ((args.options & BuildOptions.EnableHeadlessMode) != 0);
549+
return (args.target == BuildTarget.StandaloneWindows ||
550+
args.target == BuildTarget.StandaloneWindows64 ||
551+
args.target == BuildTarget.StandaloneOSX ||
552+
args.target == BuildTarget.StandaloneLinux64) &&
553+
(StandaloneBuildSubtarget)args.subtarget == StandaloneBuildSubtarget.Server;
555554
}
556555

557556
protected string GetVariationName(BuildPostProcessArgs args)
@@ -567,7 +566,7 @@ protected virtual string GetVariationName(BuildPostProcessArgs args, string plat
567566

568567
return string.Format("{0}_{1}_{2}_{3}",
569568
platformString,
570-
IsServerBuild(args) ? "server" : "player",
569+
GetServer(args) ? "server" : "player",
571570
GetDevelopment(args) ? "development" : "nondevelopment",
572571
scriptingBackend);
573572
}

Editor/Mono/BuildPipeline/NamedBuildTarget.cs

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ namespace UnityEditor.Build
1313
{
1414
"",
1515
"Standalone",
16+
"Server",
1617
"iPhone",
1718
"Android",
1819
"WebGL",
@@ -32,6 +33,7 @@ namespace UnityEditor.Build
3233

3334
public static readonly NamedBuildTarget Unknown = new NamedBuildTarget("");
3435
public static readonly NamedBuildTarget Standalone = new NamedBuildTarget("Standalone");
36+
public static readonly NamedBuildTarget Server = new NamedBuildTarget("Server");
3537
public static readonly NamedBuildTarget iOS = new NamedBuildTarget("iPhone");
3638
public static readonly NamedBuildTarget Android = new NamedBuildTarget("Android");
3739
public static readonly NamedBuildTarget WebGL = new NamedBuildTarget("WebGL");
@@ -58,7 +60,13 @@ internal NamedBuildTarget(string targetName)
5860

5961
public BuildTargetGroup ToBuildTargetGroup()
6062
{
61-
return BuildPipeline.GetBuildTargetGroupByName(TargetName);
63+
switch (TargetName)
64+
{
65+
case "Server":
66+
return BuildTargetGroup.Standalone;
67+
default:
68+
return BuildPipeline.GetBuildTargetGroupByName(TargetName);
69+
}
6270
}
6371

6472
public static NamedBuildTarget FromBuildTargetGroup(BuildTargetGroup buildTargetGroup)
@@ -127,7 +135,6 @@ public override bool Equals(object obj)
127135
{
128136
return false;
129137
}
130-
131138
return Equals((NamedBuildTarget)obj);
132139
}
133140

0 commit comments

Comments
 (0)