Skip to content

Commit 580a7b7

Browse files
author
Unity Technologies
committed
Unity 2022.3.47f1 C# reference source code
1 parent 670f87d commit 580a7b7

25 files changed

Lines changed: 164 additions & 132 deletions

File tree

Editor/IncrementalBuildPipeline/PlayerBuildProgramLibrary.Data/Data.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,10 @@ public class Il2CppConfig
9393
public string[] AdditionalCppFiles = new string[0];
9494
public string[] AdditionalArgs = new string[0];
9595
public string CompilerFlags;
96+
public string[] AdditionalLibraries;
97+
public string[] AdditionalDefines;
98+
public string[] AdditionalIncludeDirectories;
99+
public string[] AdditionalLinkDirectories;
96100
public string LinkerFlags;
97101
public string LinkerFlagsFile;
98102
public string ExtraTypes;

Editor/Mono/BuildPipeline/Il2Cpp/IL2CPPUtils.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,14 @@ public abstract class Sysroot
3939
public abstract string GetSysrootPath();
4040
public abstract string GetToolchainPath();
4141
public abstract string GetIl2CppCompilerFlags();
42+
// The sysroot package does not currently contain an implemenation for this method, adding a default implementation to avoid breaking stuff
43+
public virtual string[] GetIl2CppAdditionalLibraries() => Array.Empty<string>();
44+
// The sysroot package does not currently contain an implemenation for this method, adding a default implementation to avoid breaking stuff
45+
public virtual string[] GetIl2CppAdditionalDefines() => Array.Empty<string>();
46+
// The sysroot package does not currently contain an implemenation for this method, adding a default implementation to avoid breaking stuff
47+
public virtual string[] GetIl2CppAdditionalIncludeDirectories() => Array.Empty<string>();
48+
// The sysroot package does not currently contain an implemenation for this method, adding a default implementation to avoid breaking stuff
49+
public virtual string[] GetIl2CppAdditionalLinkDirectories() => Array.Empty<string>();
4250
public abstract string GetIl2CppLinkerFlags();
4351
// The sysroot package does not currently contain an implemenation for this method, adding a default implementation to avoid breaking stuff
4452
public virtual string GetIl2CppLinkerFlagsFile() => null;

Editor/Mono/GUI/WindowLayout.cs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1575,6 +1575,9 @@ public static void ResetAllLayouts(bool quitOnCancel = true)
15751575
return;
15761576
}
15771577

1578+
if (!ContainerWindow.InternalRequestCloseAll(false))
1579+
return;
1580+
15781581
ResetFactorySettings();
15791582
}
15801583

Editor/Mono/GUIView.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -286,8 +286,8 @@ public static void BeginOffsetArea(Rect screenRect, GUIContent content, GUIStyle
286286

287287
public static void EndOffsetArea()
288288
{
289-
GUILayoutUtility.EndLayoutGroup();
290289
GUI.EndGroup();
290+
GUILayoutUtility.EndLayoutGroup();
291291
}
292292

293293
// we already have renderdoc integration done in GUIView but in cpp

Editor/Mono/HostView.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,12 +532,16 @@ public void InvokeOnGUI(Rect onGUIPosition)
532532
}
533533
finally
534534
{
535+
// We explicitly called BeginOffsetArea outside this try-catch scope,
536+
// so we need to always explicitly end it as well just like all other
537+
// GUI scopes are responsible for dealing with ExitGUI properly.
538+
EndOffsetArea();
539+
535540
// We can't reset gui state after ExitGUI we just want to bail completely
536541
if (!(isExitGUIException || GUIUtility.guiIsExiting))
537542
{
538543
CheckNotificationStatus();
539544

540-
EndOffsetArea();
541545
if (GUILayoutUtility.unbalancedgroupscount != 0)
542546
{
543547
Debug.LogError("GUI Error: Invalid GUILayout state in " + GetActualViewName() + " view. Verify that all layout Begin/End calls match");

Editor/Mono/Modules/BeeBuildPostprocessor.cs

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -225,6 +225,26 @@ protected virtual string Il2CppLinkerFlagsFor(BuildPostProcessArgs args)
225225
return null;
226226
}
227227

228+
protected virtual string[] Il2CppAdditionalLibrariesFor(BuildPostProcessArgs args)
229+
{
230+
return Array.Empty<string>();
231+
}
232+
233+
protected virtual string[] Il2CppAdditionalDefinesFor(BuildPostProcessArgs args)
234+
{
235+
return Array.Empty<string>();
236+
}
237+
238+
protected virtual string[] Il2CppAdditionalIncludeDirectoriesFor(BuildPostProcessArgs args)
239+
{
240+
return Array.Empty<string>();
241+
}
242+
243+
protected virtual string[] Il2CppAdditionalLinkDirectoriesFor(BuildPostProcessArgs args)
244+
{
245+
return Array.Empty<string>();
246+
}
247+
228248
protected virtual string Il2CppLinkerFlagsFileFor(BuildPostProcessArgs args)
229249
{
230250
return null;
@@ -252,6 +272,10 @@ Il2CppConfig Il2CppConfigFor(BuildPostProcessArgs args)
252272
var sysrootPath = Il2CppSysrootPathFor(args);
253273
var toolchainPath = Il2CppToolchainPathFor(args);
254274
var compilerFlags = Il2CppCompilerFlagsFor(args);
275+
var additionalLibraries = Il2CppAdditionalLibrariesFor(args);
276+
var additionalDefines = Il2CppAdditionalDefinesFor(args);
277+
var additionalIncludeDirectories = Il2CppAdditionalIncludeDirectoriesFor(args);
278+
var additionalLinkDirectories = Il2CppAdditionalLinkDirectoriesFor(args);
255279
var linkerFlags = Il2CppLinkerFlagsFor(args);
256280
var linkerFlagsFile = Il2CppLinkerFlagsFileFor(args);
257281
var relativeDataPath = Il2CppDataRelativePath(args);
@@ -301,6 +325,10 @@ Il2CppConfig Il2CppConfigFor(BuildPostProcessArgs args)
301325
AdditionalArgs = additionalArgs.ToArray(),
302326
AllowDebugging = allowDebugging,
303327
CompilerFlags = compilerFlags,
328+
AdditionalLibraries = additionalLibraries,
329+
AdditionalDefines = additionalDefines,
330+
AdditionalIncludeDirectories = additionalIncludeDirectories,
331+
AdditionalLinkDirectories = additionalLinkDirectories,
304332
LinkerFlags = linkerFlags,
305333
LinkerFlagsFile = linkerFlagsFile,
306334
SysRootPath = sysrootPath,

Editor/Mono/Prefabs/PrefabUtility.cs

Lines changed: 1 addition & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -2809,37 +2809,7 @@ public static GameObject LoadPrefabContents(string assetPath)
28092809
throw new ArgumentException(string.Format("Could not load Prefab contents at path {0}. Prefabs should have exactly 1 root GameObject, {1} was found.", assetPath, roots.Length));
28102810
}
28112811

2812-
var prefabRoot = roots[0];
2813-
2814-
if (prefabRoot.GetComponent<RectTransform>() != null && prefabRoot.GetComponent<Canvas>() != null)
2815-
{
2816-
var prefabAsset = AssetDatabase.LoadMainAssetAtPath(assetPath) as GameObject;
2817-
if (prefabAsset == null)
2818-
throw new ArgumentException(string.Format("Asset at path: {0}, cannot be loaded as GameObject", assetPath));
2819-
2820-
var prefabAssetRectTransform = prefabAsset.GetComponent<RectTransform>();
2821-
var prefabAssetCanvas = prefabAsset.GetComponent<Canvas>();
2822-
2823-
if (!prefabAssetRectTransform || !prefabAssetCanvas)
2824-
return prefabRoot;
2825-
2826-
// Since the condition IsUI checks for the presence of RectTransform, we can safely assume that RectTransform is present.
2827-
var prefabRootRectTransform = prefabRoot.GetComponent<RectTransform>();
2828-
var rootCanvas = prefabRoot.GetComponent<Canvas>();
2829-
2830-
// Since the prefab we're modifying is non-driven, we need to re-parent it in a similar way to how it's done in prefab staging.
2831-
// This is important because the root is always considered driven. If we don't do this, it would continue to be treated as a root and set as driven.
2832-
PrefabStageUtility.HandleUIReparentingIfNeeded(prefabRoot, 0);
2833-
2834-
// Ensure that if there is a parent Canvas, the child Canvas's driven values are set to null
2835-
if (rootCanvas)
2836-
rootCanvas.UpdateCanvasRectTransform(true);
2837-
2838-
// Now, we can safely reset our prefabRoot's sizeDelta and anchoredPosition to its orginal value.
2839-
prefabRootRectTransform.sizeDelta = prefabAssetRectTransform.sizeDelta;
2840-
prefabRootRectTransform.anchoredPosition = prefabAssetRectTransform.anchoredPosition;
2841-
}
2842-
return prefabRoot;
2812+
return roots[0];
28432813
}
28442814

28452815
public static void UnloadPrefabContents(GameObject contentsRoot)

Editor/Mono/SceneManagement/StageManager/PrefabStage/PrefabStageUtility.cs

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -296,13 +296,6 @@ internal static bool IsGameObjectThePrefabRootInAnyPrefabStage(GameObject gameOb
296296
return false;
297297
}
298298

299-
[UsedByNativeCode]
300-
internal static bool IsGameObjectInInvalidPrefabStage(GameObject gameObject)
301-
{
302-
PrefabStage prefabStage = GetCurrentPrefabStage();
303-
return (prefabStage != null && prefabStage.scene == gameObject.scene && !prefabStage.isValid);
304-
}
305-
306299
[UsedByNativeCode]
307300
internal static bool IsPrefabStageScene(Scene scene)
308301
{

Editor/Mono/SceneView/SceneView.cs

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2125,7 +2125,9 @@ private void DoDrawCamera(Rect windowSpaceCameraRect, Rect groupSpaceCameraRect,
21252125

21262126
if (evt.type == EventType.Repaint)
21272127
RenderFilteredScene(groupSpaceCameraRect);
2128-
2128+
2129+
DrawPingedObjectSubmeshOutlineIfNeeded();
2130+
21292131
if (sceneRendersToRT)
21302132
{
21312133
GUIClip.Internal_PopParentClip();
@@ -2172,8 +2174,15 @@ private void DoDrawCamera(Rect windowSpaceCameraRect, Rect groupSpaceCameraRect,
21722174
}
21732175

21742176
DrawRenderModeOverlay(groupSpaceCameraRect);
2177+
2178+
DrawPingedObjectSubmeshOutlineIfNeeded();
21752179
}
21762180

2181+
ShaderUtil.allowAsyncCompilation = oldAsync;
2182+
}
2183+
2184+
void DrawPingedObjectSubmeshOutlineIfNeeded()
2185+
{
21772186
if (isPingingObject)
21782187
{
21792188
var currentTime = Time.realtimeSinceStartup;
@@ -2195,8 +2204,6 @@ private void DoDrawCamera(Rect windowSpaceCameraRect, Rect groupSpaceCameraRect,
21952204
}
21962205
}
21972206
}
2198-
2199-
ShaderUtil.allowAsyncCompilation = oldAsync;
22002207
}
22012208

22022209
void RenderFilteredScene(Rect groupSpaceCameraRect)

Editor/Mono/Shaders/ShaderKeywordFilterData.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,6 +195,14 @@ internal static SettingsNode GatherFilterData(string nodeName, object containerO
195195
if (containerObject == null)
196196
return node;
197197

198+
// Unity objects have their own validity checking
199+
if (containerObject is UnityEngine.Object)
200+
{
201+
var unityObject = containerObject as UnityEngine.Object;
202+
if (!unityObject)
203+
return node;
204+
}
205+
198206
if (!visited.Add(containerObject))
199207
return node;
200208

0 commit comments

Comments
 (0)