Skip to content

Commit fe12a4d

Browse files
author
Unity Technologies
committed
Unity 2021.2.9f1 C# reference source code
1 parent 7fa5f8a commit fe12a4d

41 files changed

Lines changed: 396 additions & 315 deletions

File tree

Some content is hidden

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

Editor/IncrementalBuildPipeline/PlayerBuildProgramLibrary.Data/Data.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ public class Il2CppConfig
6363
public bool EnableDeepProfilingSupport;
6464
public bool EnableFullGenericSharing;
6565
public string Profile;
66+
public string Defines;
6667

6768
public string ConfigurationName;
6869
public bool GcWBarrierValidation;

Editor/Mono/BuildPipeline/BuildPipelineInterfaces.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -406,6 +406,14 @@ private static bool InvokeCallbackInterfacesPair<T1, T2>(List<T1> oneInterfaces,
406406
invocationTwo(callback);
407407
}
408408
}
409+
catch (TargetInvocationException e)
410+
{
411+
// Note: Attribute based callbacks are called via reflection.
412+
// Exceptions in those calls are wrapped in TargetInvocationException
413+
Debug.LogException(e.InnerException);
414+
if (exitOnFailure)
415+
return false;
416+
}
409417
catch (Exception e)
410418
{
411419
Debug.LogException(e);

Editor/Mono/BuildPipeline/DesktopStandaloneBuildWindowExtension.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ protected virtual string GetCannotBuildPlayerInCurrentSetupError()
210210
if (namedBuildTarget == NamedBuildTarget.Server)
211211
{
212212
if(!m_HasServerPlayers)
213-
return $"Dedicated Server support for {GetHostPlatformName()} is not installed";
213+
return $"Dedicated Server support for {GetHostPlatformName()} is not installed.";
214214

215215
if (PlayerSettings.GetScriptingBackend(namedBuildTarget) == ScriptingImplementation.IL2CPP && !m_IsRunningOnHostPlatform)
216216
return string.Format("{0} IL2CPP player can only be built on {0}.", GetHostPlatformName());

Editor/Mono/BuildPipeline/DesktopStandalonePostProcessor.cs

Lines changed: 15 additions & 13 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 UnityEditor;
6+
using UnityEditor.Build;
67
using UnityEditor.Modules;
78
using UnityEditorInternal;
89
using UnityEngine;
@@ -25,11 +26,7 @@ protected virtual string GetVariationName(BuildPostProcessArgs args)
2526
}
2627

2728
protected bool GetServer(BuildPostProcessArgs args) =>
28-
(args.target == BuildTarget.StandaloneWindows ||
29-
args.target == BuildTarget.StandaloneWindows64 ||
30-
args.target == BuildTarget.StandaloneOSX ||
31-
args.target == BuildTarget.StandaloneLinux64) &&
32-
(StandaloneBuildSubtarget)args.subtarget == StandaloneBuildSubtarget.Server;
29+
GetNamedBuildTarget(args) == NamedBuildTarget.Server;
3330

3431
protected string GetVariationFolder(BuildPostProcessArgs args) =>
3532
$"{args.playerPackage}/Variations/{GetVariationName(args)}";
@@ -41,7 +38,7 @@ public override void UpdateBootConfig(BuildTarget target, BootConfigData config,
4138
config.AddKey("single-instance");
4239
if (!PlayerSettings.useFlipModelSwapchain)
4340
config.AddKey("force-d3d11-bitblt-mode");
44-
if (IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(BuildPipeline.GetBuildTargetGroup(target)))
41+
if (IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(NamedBuildTarget.FromActiveSettings(target)))
4542
config.Set("mono-codegen", "il2cpp");
4643
if ((options & BuildOptions.EnableCodeCoverage) != 0)
4744
config.Set("enableCodeCoverage", "1");
@@ -56,26 +53,31 @@ public override void LaunchPlayer(BuildLaunchPlayerArgs args)
5653

5754
readonly bool m_HasMonoPlayers;
5855
readonly bool m_HasIl2CppPlayers;
56+
readonly bool m_HasServerMonoPlayers;
57+
readonly bool m_HasServerIl2CppPlayers;
5958

60-
protected DesktopStandalonePostProcessor(bool hasMonoPlayers, bool hasIl2CppPlayers)
59+
protected DesktopStandalonePostProcessor(bool hasMonoPlayers, bool hasIl2CppPlayers, bool hasServerMonoPlayers, bool hasServerIl2CppPlayers)
6160
{
6261
m_HasMonoPlayers = hasMonoPlayers;
6362
m_HasIl2CppPlayers = hasIl2CppPlayers;
63+
m_HasServerMonoPlayers = hasServerMonoPlayers;
64+
m_HasServerIl2CppPlayers = hasServerIl2CppPlayers;
6465
}
6566

6667
public override string PrepareForBuild(BuildOptions options, BuildTarget target)
6768
{
68-
if (!m_HasMonoPlayers)
69+
var namedBuildTarget = NamedBuildTarget.FromActiveSettings(target);
70+
var isServer = namedBuildTarget == NamedBuildTarget.Server;
71+
72+
if ((!isServer && !m_HasMonoPlayers) || (isServer && !m_HasServerMonoPlayers))
6973
{
70-
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(target);
71-
if (PlayerSettings.GetScriptingBackend(buildTargetGroup) != ScriptingImplementation.IL2CPP)
74+
if (PlayerSettings.GetScriptingBackend(namedBuildTarget) != ScriptingImplementation.IL2CPP)
7275
return "Currently selected scripting backend (Mono) is not installed.";
7376
}
7477

75-
if (!m_HasIl2CppPlayers)
78+
if ((!isServer && !m_HasIl2CppPlayers) || (isServer && !m_HasServerIl2CppPlayers))
7679
{
77-
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(target);
78-
if (PlayerSettings.GetScriptingBackend(buildTargetGroup) == ScriptingImplementation.IL2CPP)
80+
if (PlayerSettings.GetScriptingBackend(namedBuildTarget) == ScriptingImplementation.IL2CPP)
7981
return "Currently selected scripting backend (IL2CPP) is not installed.";
8082
}
8183

Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -274,21 +274,21 @@ internal static IIl2CppPlatformProvider PlatformProviderForNotModularPlatform(Bu
274274

275275
internal static IL2CPPBuilder RunIl2Cpp(string tempFolder, string stagingAreaData, IIl2CppPlatformProvider platformProvider, Action<string> modifyOutputBeforeCompile, RuntimeClassRegistry runtimeClassRegistry)
276276
{
277-
var builder = new IL2CPPBuilder(tempFolder, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(BuildPipeline.GetBuildTargetGroup(platformProvider.target)));
277+
var builder = new IL2CPPBuilder(tempFolder, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(platformProvider.namedBuildTarget));
278278
builder.Run();
279279
return builder;
280280
}
281281

282282
internal static IL2CPPBuilder RunIl2Cpp(string stagingAreaData, IIl2CppPlatformProvider platformProvider, Action<string> modifyOutputBeforeCompile, RuntimeClassRegistry runtimeClassRegistry)
283283
{
284-
var builder = new IL2CPPBuilder(stagingAreaData, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(BuildPipeline.GetBuildTargetGroup(platformProvider.target)));
284+
var builder = new IL2CPPBuilder(stagingAreaData, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(platformProvider.namedBuildTarget));
285285
builder.Run();
286286
return builder;
287287
}
288288

289289
internal static IL2CPPBuilder RunCompileAndLink(string tempFolder, string stagingAreaData, IIl2CppPlatformProvider platformProvider, Action<string> modifyOutputBeforeCompile, RuntimeClassRegistry runtimeClassRegistry, string il2cppBuildCacheSource)
290290
{
291-
var builder = new IL2CPPBuilder(tempFolder, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(BuildPipeline.GetBuildTargetGroup(platformProvider.target)));
291+
var builder = new IL2CPPBuilder(tempFolder, stagingAreaData, platformProvider, modifyOutputBeforeCompile, runtimeClassRegistry, IL2CPPUtils.UseIl2CppCodegenWithMonoBackend(platformProvider.namedBuildTarget));
292292
builder.RunCompileAndLink(il2cppBuildCacheSource);
293293
return builder;
294294
}
@@ -337,10 +337,10 @@ internal static string ApiCompatibilityLevelToDotNetProfileArgument(ApiCompatibi
337337
}
338338
}
339339

340-
internal static bool UseIl2CppCodegenWithMonoBackend(BuildTargetGroup targetGroup)
340+
internal static bool UseIl2CppCodegenWithMonoBackend(NamedBuildTarget namedBuildTarget)
341341
{
342342
return EditorApplication.useLibmonoBackendForIl2cpp &&
343-
PlayerSettings.GetScriptingBackend(targetGroup) == ScriptingImplementation.IL2CPP;
343+
PlayerSettings.GetScriptingBackend(namedBuildTarget) == ScriptingImplementation.IL2CPP;
344344
}
345345

346346
internal static bool EnableIL2CPPDebugger(IIl2CppPlatformProvider provider, BuildTargetGroup targetGroup)
@@ -359,10 +359,9 @@ internal static bool EnableIL2CPPDebugger(IIl2CppPlatformProvider provider, Buil
359359
}
360360
}
361361

362-
internal static string[] GetBuilderDefinedDefines(IIl2CppPlatformProvider il2cppPlatformProvider, BuildTargetGroup buildTargetGroup)
362+
internal static string[] GetBuilderDefinedDefines(BuildTarget target, ApiCompatibilityLevel apiCompatibilityLevel, bool enableIl2CppDebugger)
363363
{
364364
List<string> defines = new List<string>();
365-
var apiCompatibilityLevel = PlayerSettings.GetApiCompatibilityLevel(buildTargetGroup);
366365

367366
switch (apiCompatibilityLevel)
368367
{
@@ -380,8 +379,6 @@ internal static string[] GetBuilderDefinedDefines(IIl2CppPlatformProvider il2cpp
380379
throw new InvalidOperationException($"IL2CPP doesn't support building with {apiCompatibilityLevel} API compatibility level!");
381380
}
382381

383-
384-
var target = il2cppPlatformProvider.target;
385382
if (target == BuildTarget.StandaloneWindows || target == BuildTarget.StandaloneWindows64 ||
386383
target == BuildTarget.XboxOne || target == BuildTarget.WSAPlayer)
387384
{
@@ -397,7 +394,7 @@ internal static string[] GetBuilderDefinedDefines(IIl2CppPlatformProvider il2cpp
397394
}
398395
}
399396

400-
if (EnableIL2CPPDebugger(il2cppPlatformProvider, buildTargetGroup))
397+
if (enableIl2CppDebugger)
401398
defines.Add("IL2CPP_MONO_DEBUGGER=1");
402399

403400
if (BuildPipeline.IsFeatureSupported("ENABLE_SCRIPTING_GC_WBARRIERS", target))
@@ -878,6 +875,7 @@ private string GetMonoBleedingEdgeExe()
878875
internal interface IIl2CppPlatformProvider
879876
{
880877
BuildTarget target { get; }
878+
NamedBuildTarget namedBuildTarget { get; }
881879
bool emitNullChecks { get; }
882880
bool enableStackTraces { get; }
883881
bool enableArrayBoundsCheck { get; }
@@ -909,13 +907,16 @@ public BaseIl2CppPlatformProvider(BuildTarget target, string libraryFolder, Buil
909907
string baselibLibraryDirectory)
910908
{
911909
this.target = target;
910+
this.namedBuildTarget = NamedBuildTarget.FromActiveSettings(target);
912911
this.libraryFolder = libraryFolder;
913912
this.buildReport = buildReport;
914913
_baselibLibraryDirectory = baselibLibraryDirectory;
915914
}
916915

917916
public virtual BuildTarget target { get; private set; }
918917

918+
public virtual NamedBuildTarget namedBuildTarget { get; private set; }
919+
919920
public virtual string libraryFolder { get; private set; }
920921

921922
public virtual bool emitNullChecks

Editor/Mono/BuildPipeline/NamedBuildTarget.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,6 +114,18 @@ public static NamedBuildTarget FromBuildTargetGroup(BuildTargetGroup buildTarget
114114
throw new ArgumentException($"There is no a valid NamedBuildTarget for BuildTargetGroup '{buildTargetGroup}'");
115115
}
116116

117+
internal static NamedBuildTarget FromActiveSettings(BuildTarget target)
118+
{
119+
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(target);
120+
121+
if (buildTargetGroup == BuildTargetGroup.Standalone && (StandaloneBuildSubtarget)EditorUserBuildSettings.GetActiveSubtargetFor(target) == StandaloneBuildSubtarget.Server)
122+
{
123+
return NamedBuildTarget.Server;
124+
}
125+
126+
return NamedBuildTarget.FromBuildTargetGroup(buildTargetGroup);
127+
}
128+
117129
public static bool operator==(NamedBuildTarget lhs, NamedBuildTarget rhs)
118130
{
119131
return lhs.Equals(rhs);

Editor/Mono/BuildPipeline/UnityLinker/UnityLinkerArgumentValueProvider.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public string Runtime
2020
{
2121
get
2222
{
23-
var backend = PlayerSettings.GetScriptingBackend(m_RunInformation.buildTargetGroup);
23+
var backend = PlayerSettings.GetScriptingBackend(m_RunInformation.namedBuildTarget);
2424
switch (backend)
2525
{
2626
case ScriptingImplementation.IL2CPP:

Editor/Mono/BuildPipeline/UnityLinker/UnityLinkerRunInformation.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
using System.IO;
77
using System.Linq;
88
using UnityEditor;
9+
using UnityEditor.Build;
910
using UnityEditor.Build.Reporting;
1011
using UnityEditor.UnityLinker;
1112

@@ -16,6 +17,7 @@ class UnityLinkerRunInformation
1617
public readonly string managedAssemblyFolderPath;
1718
public readonly BuildTarget target;
1819
public readonly BuildTargetGroup buildTargetGroup;
20+
public readonly NamedBuildTarget namedBuildTarget;
1921
public readonly BaseUnityLinkerPlatformProvider platformProvider;
2022
public readonly RuntimeClassRegistry rcr;
2123
public readonly ManagedStrippingLevel managedStrippingLevel;
@@ -40,8 +42,9 @@ public UnityLinkerRunInformation(string managedAssemblyFolderPath,
4042
pipelineData = new UnityLinkerBuildPipelineData(target, managedAssemblyFolderPath);
4143

4244
buildTargetGroup = BuildPipeline.GetBuildTargetGroup(buildTarget);
45+
namedBuildTarget = NamedBuildTarget.FromActiveSettings(buildTarget);
4346
argumentProvider = new UnityLinkerArgumentValueProvider(this);
44-
isMonoBackend = PlayerSettings.GetScriptingBackend(buildTargetGroup) == ScriptingImplementation.Mono2x;
47+
isMonoBackend = PlayerSettings.GetScriptingBackend(namedBuildTarget) == ScriptingImplementation.Mono2x;
4548
engineStrippingSupported = (platformProvider?.supportsEngineStripping ?? false) && !isMonoBackend;
4649
performEngineStripping = rcr != null && PlayerSettings.stripEngineCode && engineStrippingSupported;
4750
}

Editor/Mono/Commands/GOCreationCommands.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -397,6 +397,7 @@ static void CreateParticleSystem(MenuCommand menuCommand)
397397
go.GetComponent<Transform>().SetLocalEulerAngles(new Vector3(-90, 0, 0), RotationOrder.OrderZXY);
398398
var renderer = go.GetComponent<ParticleSystemRenderer>();
399399
renderer.material = Material.GetDefaultParticleMaterial();
400+
renderer.oldTrailMaterial = Material.GetDefaultLineMaterial(); // This trick means that when enabling the trails module for the first time, there is a default material assigned
400401
Place(go, parent);
401402
}
402403

Editor/Mono/CompilationPipeline.bindings.cs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,9 @@ namespace UnityEditor.Compilation
1111
enum CompilationSetupErrors // Keep in sync with enum CompilationSetupErrors::Flags in ScriptCompilationPipeline.h
1212
{
1313
None = 0,
14-
CyclicReferences = 1 << 0, // set when CyclicAssemblyReferenceException is thrown
15-
LoadError = 1 << 1, // set when AssemblyDefinitionException is thrown
16-
PrecompiledAssemblyError = 1 << 2, // set when PrecompiledAssemblyException is thrown
17-
All = CyclicReferences | LoadError | PrecompiledAssemblyError,
14+
LoadError = 1 << 0, // set when AssemblyDefinitionException is thrown
15+
PrecompiledAssemblyError = 1 << 1, // set when PrecompiledAssemblyException is thrown
16+
All = LoadError | PrecompiledAssemblyError,
1817
};
1918

2019
[NativeHeader("Editor/Src/ScriptCompilation/ScriptCompilationPipeline.h")]

0 commit comments

Comments
 (0)