Skip to content

Commit 79868d3

Browse files
author
Unity Technologies
committed
Unity 2023.3.0b8 C# reference source code
1 parent 1b4b79b commit 79868d3

File tree

72 files changed

+946
-555
lines changed

Some content is hidden

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

72 files changed

+946
-555
lines changed

Editor/Mono/Audio/UIElements/AudioRandomRangeSliderTracker.cs

Lines changed: 67 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -16,59 +16,99 @@ class AudioRandomRangeSliderTracker : VisualElement
1616
public override object CreateInstance() => new AudioRandomRangeSliderTracker();
1717
}
1818

19+
static readonly CustomStyleProperty<Color> s_TrackerColorProperty = new("--tracker-color");
20+
1921
Slider m_ParentSlider;
20-
float m_PreviousWidth;
2122
Vector2 m_Range = Vector2.zero;
22-
23+
Color m_TrackerColor;
24+
25+
static void CustomStylesResolved(CustomStyleResolvedEvent evt)
26+
{
27+
var element = (AudioRandomRangeSliderTracker)evt.currentTarget;
28+
29+
element.UpdateCustomStyles();
30+
}
31+
32+
void UpdateCustomStyles()
33+
{
34+
if (customStyle.TryGetValue(s_TrackerColorProperty, out var trackerColor))
35+
{
36+
m_TrackerColor = trackerColor;
37+
}
38+
}
39+
2340
internal static AudioRandomRangeSliderTracker Create(Slider parentSlider, Vector2 range)
2441
{
2542
var dragContainer = UIToolkitUtilities.GetChildByName<VisualElement>(parentSlider, "unity-drag-container");
2643
var rangeTrackerAsset = UIToolkitUtilities.LoadUxml("UXML/Audio/AudioRandomRangeSliderTracker.uxml");
2744
var baseTracker = UIToolkitUtilities.GetChildByName<VisualElement>(parentSlider, "unity-tracker");
2845
var insertionIndex = dragContainer.IndexOf(baseTracker) + 1;
2946
var templateContainer = rangeTrackerAsset.Instantiate();
47+
3048
dragContainer.Insert(insertionIndex, templateContainer);
49+
3150
var rangeTracker = UIToolkitUtilities.GetChildAtIndex<AudioRandomRangeSliderTracker>(templateContainer, 0);
51+
52+
rangeTracker.SetRange(range);
3253
rangeTracker.m_ParentSlider = parentSlider;
54+
rangeTracker.generateVisualContent += GenerateVisualContent;
55+
rangeTracker.RegisterCallback<CustomStyleResolvedEvent>(CustomStylesResolved);
3356
rangeTracker.m_ParentSlider.RegisterCallback<GeometryChangedEvent>(OnGeometryChanged);
34-
rangeTracker.SetRange(range);
57+
3558
return rangeTracker;
3659
}
3760

3861
internal void SetRange(Vector2 range)
3962
{
4063
m_Range = range;
41-
var minValue = m_ParentSlider.value - Math.Abs(m_Range.x);
42-
minValue = Mathf.Clamp(minValue, m_ParentSlider.lowValue, m_ParentSlider.highValue);
43-
var maxValue = m_ParentSlider.value + Mathf.Abs(m_Range.y);
44-
maxValue = Mathf.Clamp(maxValue, m_ParentSlider.lowValue, m_ParentSlider.highValue);
4564

46-
if (Mathf.Approximately(parent.contentRect.width, 0) || m_Range == Vector2.zero || Mathf.Approximately(minValue ,maxValue))
47-
{
48-
style.display = DisplayStyle.None;
49-
return;
50-
}
51-
52-
var minValueDelta = minValue - m_ParentSlider.lowValue;
53-
var maxValueDelta = maxValue - m_ParentSlider.lowValue;
54-
55-
var pxPerVal = parent.contentRect.width / m_ParentSlider.range;
56-
var translate = style.translate.value;
57-
translate.x = pxPerVal * minValueDelta;
58-
style.translate = translate;
59-
style.width = (maxValueDelta - minValueDelta) * pxPerVal;
60-
style.display = DisplayStyle.Flex;
65+
MarkDirtyRepaint();
6166
}
6267

6368
static void OnGeometryChanged(GeometryChangedEvent evt)
6469
{
6570
var sliderTracker = UIToolkitUtilities.GetChildByClassName<AudioRandomRangeSliderTracker>(evt.elementTarget, "unity-audio-random-range-slider-tracker");
66-
if (Mathf.Approximately(sliderTracker.m_PreviousWidth, sliderTracker.parent.contentRect.width))
67-
{
68-
return;
69-
}
7071

71-
sliderTracker.m_PreviousWidth = sliderTracker.parent.contentRect.width;
7272
sliderTracker.SetRange(sliderTracker.m_Range);
7373
}
74+
75+
// Maps 'x' from the range '[x_min; x_max]' to the range '[y_min; y_max]'.
76+
static float Map(float x, float x_min, float x_max, float y_min, float y_max)
77+
{
78+
var a = (x_max - x) / (x_max - x_min);
79+
var b = (x - x_min) / (x_max - x_min);
80+
81+
return a * y_min + b * y_max;
82+
}
83+
84+
static void GenerateVisualContent(MeshGenerationContext context)
85+
{
86+
var painter2D = context.painter2D;
87+
var sliderTracker = context.visualElement as AudioRandomRangeSliderTracker;
88+
var range = sliderTracker.m_Range;
89+
var parentSlider = sliderTracker.m_ParentSlider;
90+
var contentRect = context.visualElement.contentRect;
91+
92+
// Offset the range so it is centered around the parent slider's current value.
93+
range.x += parentSlider.value;
94+
range.y += parentSlider.value;
95+
96+
// Map the range from the slider value range (e.g. dB) to the horizontal span of the content-rect (px).
97+
var left = Map(range.y, parentSlider.lowValue, parentSlider.highValue, contentRect.xMin, contentRect.xMax);
98+
var right = Map(range.x, parentSlider.lowValue, parentSlider.highValue, contentRect.xMin, contentRect.xMax);
99+
100+
// Clamp the mapped range so that it lies within the boundaries of the content-rect.
101+
left = Mathf.Clamp(left, contentRect.xMin, contentRect.xMax);
102+
right = Mathf.Clamp(right, contentRect.xMin, contentRect.xMax);
103+
104+
// Draw the tracker.
105+
painter2D.fillColor = sliderTracker.m_TrackerColor;
106+
painter2D.BeginPath();
107+
painter2D.MoveTo(new Vector2(left, contentRect.yMin));
108+
painter2D.LineTo(new Vector2(right, contentRect.yMin));
109+
painter2D.LineTo(new Vector2(right, contentRect.yMax));
110+
painter2D.LineTo(new Vector2(left, contentRect.yMax));
111+
painter2D.ClosePath();
112+
painter2D.Fill();
113+
}
74114
}

Editor/Mono/Audio/UIElements/OnAudioFilterReadLevelMeter.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,13 @@ internal class OnAudioFilterReadLevelMeter : IMGUIContainer
1313

1414
public OnAudioFilterReadLevelMeter(MonoBehaviour behaviour)
1515
{
16-
onGUIHandler = () => { m_IMGUI_AudioFilterGUI.DrawAudioFilterGUI(behaviour); };
16+
onGUIHandler = () =>
17+
{
18+
if (GUIView.current != null)
19+
{
20+
m_IMGUI_AudioFilterGUI.DrawAudioFilterGUI(behaviour);
21+
}
22+
};
1723
}
1824
}
1925
}

Editor/Mono/BuildProfile/BuildProfileContext.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ void OnEnable()
272272
var key = viewablePlatformKeys[index];
273273
string path = GetFilePathForBuildProfile(key);
274274

275-
if (!File.Exists(path))
275+
if (!File.Exists(path) || !BuildProfileModuleUtil.IsModuleInstalled(key.Item1, key.Item2))
276276
continue;
277277

278278
var profile = InternalEditorUtility.LoadSerializedFileAndForget(path);

Editor/Mono/BuildProfile/BuildProfileModuleUtil.cs

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public static bool IsModuleInstalled(string moduleName, StandaloneBuildSubtarget
115115
return installed
116116
&& BuildPipeline.LicenseCheck(buildTarget)
117117
&& !string.IsNullOrEmpty(moduleName)
118-
&& ModuleManager.GetBuildPostProcessor(moduleName) != null;
118+
&& ModuleManager.GetBuildProfileExtension(moduleName) != null;
119119
}
120120

121121
/// <summary>
@@ -201,9 +201,18 @@ public static string GetModuleName(BuildTarget buildTarget)
201201
/// </summary>
202202
public static void SwitchLegacyActiveFromBuildProfile(BuildProfile profile)
203203
{
204-
EditorUserBuildSettings.SwitchActiveBuildTargetAndSubtarget(
205-
profile.buildTarget,
206-
(int)profile.subtarget);
204+
var buildTargetGroup = BuildPipeline.GetBuildTargetGroup(profile.buildTarget);
205+
206+
if (buildTargetGroup == BuildTargetGroup.Standalone)
207+
{
208+
EditorUserBuildSettings.SwitchActiveBuildTargetAndSubtarget(
209+
profile.buildTarget,
210+
(int)profile.subtarget);
211+
return;
212+
}
213+
214+
// Subtarget fetched by EditorUserBuildSettings maps to the active build profile.
215+
EditorUserBuildSettings.SwitchActiveBuildTarget(buildTargetGroup, profile.buildTarget);
207216
}
208217

209218
public static void SwitchLegacySelectedBuildTargets(BuildProfile profile)
@@ -309,6 +318,12 @@ internal static BuildTarget GetBuildTarget(string moduleName)
309318
return s_DiscoveredTargetInfos[moduleName].buildTargetPlatformVal;
310319
}
311320

321+
[VisibleToOtherModules("UnityEditor.BuildProfileModule")]
322+
internal static void SuppressMissingTypeWarning()
323+
{
324+
SerializationUtility.SuppressMissingTypeWarning(nameof(BuildProfile));
325+
}
326+
312327
static Dictionary<string, BuildTargetDiscovery.DiscoveredTargetInfo> InitializeDiscoveredTargetDict()
313328
{
314329
var result = new Dictionary<string, BuildTargetDiscovery.DiscoveredTargetInfo>();

Editor/Mono/EditorSerializationUtility.bindings.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -113,5 +113,7 @@ public static bool ClearManagedReferenceWithMissingType(UnityObject obj, RefId i
113113
{
114114
return ClearManagedReferenceWithMissingTypeInternal(obj, id);
115115
}
116+
117+
internal static extern void SuppressMissingTypeWarning(string className);
116118
};
117119
}

Editor/Mono/GI/ProbeIntegrator.bindings.cs

Lines changed: 11 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,9 @@ public override string ToString()
4343
public void Prepare(IDeviceContext context, IWorld world, BufferSlice<Vector3> positions, float pushoff, int bounceCount);
4444
public void SetProgressReporter(BakeProgressState progress);
4545
public Result IntegrateDirectRadiance(IDeviceContext context, int positionOffset, int positionCount, int sampleCount,
46-
bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut);
46+
bool ignoreDirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut);
4747
public Result IntegrateIndirectRadiance(IDeviceContext context, int positionOffset, int positionCount, int sampleCount,
48-
bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut);
48+
bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut);
4949
public Result IntegrateValidity(IDeviceContext context, int positionOffset, int positionCount, int sampleCount, BufferSlice<float> validityEstimateOut);
5050
}
5151
internal class WintermuteProbeIntegrator : IProbeIntegrator
@@ -74,7 +74,7 @@ public void SetProgressReporter(BakeProgressState progress)
7474
_progress = progress;
7575
}
7676
public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext context, int positionOffset, int positionCount, int sampleCount,
77-
bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
77+
bool ignoreDirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
7878
{
7979
Debug.Assert(context is WintermuteContext, "Expected WintermuteContext but got something else.");
8080
var wmContext = context as WintermuteContext;
@@ -88,6 +88,7 @@ public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext con
8888
int directSampleCount = sampleCount;
8989
int giSampleCount = 0;
9090
int envSampleCount = 0;
91+
const bool ignoreIndirectEnvironment = true;
9192
var lightBakerResult = LightBaker.IntegrateProbeDirectRadianceWintermute(positionsPtr, _integrationContext, positionOffset, positionCount, _pushoff,
9293
_bounceCount, directSampleCount, giSampleCount, envSampleCount, ignoreDirectEnvironment, ignoreIndirectEnvironment, wmContext, _progress, shPtr);
9394

@@ -104,7 +105,7 @@ public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext con
104105
return lightBakerResult.ConvertToIProbeIntegratorResult();
105106
}
106107
public unsafe IProbeIntegrator.Result IntegrateIndirectRadiance(IDeviceContext context,
107-
int positionOffset, int positionCount, int sampleCount, bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment,
108+
int positionOffset, int positionCount, int sampleCount, bool ignoreIndirectEnvironment,
108109
BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
109110
{
110111
Debug.Assert(context is WintermuteContext, "Expected WintermuteContext but got something else.");
@@ -117,6 +118,7 @@ public unsafe IProbeIntegrator.Result IntegrateIndirectRadiance(IDeviceContext c
117118
using var radianceBuffer = new NativeArray<Rendering.SphericalHarmonicsL2>(positionCount, Allocator.Persistent, NativeArrayOptions.UninitializedMemory);
118119
void* shPtr = NativeArrayUnsafeUtility.GetUnsafePtr(radianceBuffer);
119120
int directSampleCount = 0;
121+
const bool ignoreDirectEnvironment = false;
120122
int giSampleCount = sampleCount;
121123
int envSampleCount = ignoreIndirectEnvironment ? 0 : sampleCount;
122124
var lightBakerResult = LightBaker.IntegrateProbeIndirectRadianceWintermute(positionsPtr, _integrationContext, positionOffset, positionCount, _pushoff,
@@ -192,7 +194,7 @@ public void SetProgressReporter(BakeProgressState progress)
192194
_progress = progress;
193195
}
194196
public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext context, int positionOffset, int positionCount, int sampleCount,
195-
bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
197+
bool ignoreDirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
196198
{
197199
Debug.Assert(context is RadeonRaysContext, "Expected RadeonRaysContext but got something else.");
198200
var rrContext = context as RadeonRaysContext;
@@ -206,6 +208,7 @@ public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext con
206208
int directSampleCount = sampleCount;
207209
int giSampleCount = 0;
208210
int envSampleCount = 0;
211+
const bool ignoreIndirectEnvironment = true;
209212
var lightBakerResult = LightBaker.IntegrateProbeDirectRadianceRadeonRays(positionsPtr, _integrationContext, positionOffset, positionCount, _pushoff,
210213
_bounceCount, directSampleCount, giSampleCount, envSampleCount, ignoreDirectEnvironment, ignoreIndirectEnvironment, rrContext, _progress, shPtr);
211214

@@ -223,7 +226,7 @@ public unsafe IProbeIntegrator.Result IntegrateDirectRadiance(IDeviceContext con
223226
}
224227

225228
public unsafe IProbeIntegrator.Result IntegrateIndirectRadiance(IDeviceContext context, int positionOffset, int positionCount, int sampleCount,
226-
bool ignoreDirectEnvironment, bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
229+
bool ignoreIndirectEnvironment, BufferSlice<SphericalHarmonicsL2> radianceEstimateOut)
227230
{
228231
Debug.Assert(context is RadeonRaysContext, "Expected RadeonRaysContext but got something else.");
229232
var rrContext = context as RadeonRaysContext;
@@ -235,8 +238,9 @@ public unsafe IProbeIntegrator.Result IntegrateIndirectRadiance(IDeviceContext c
235238
using var radianceBuffer = new NativeArray<Rendering.SphericalHarmonicsL2>(positionCount, Allocator.Persistent, NativeArrayOptions.UninitializedMemory);
236239
void* shPtr = NativeArrayUnsafeUtility.GetUnsafePtr(radianceBuffer);
237240
int directSampleCount = 0;
241+
const bool ignoreDirectEnvironment = false;
238242
int giSampleCount = sampleCount;
239-
int envSampleCount = ignoreIndirectEnvironment ? 0 : sampleCount; ;
243+
int envSampleCount = ignoreIndirectEnvironment ? 0 : sampleCount;
240244
var lightBakerResult = LightBaker.IntegrateProbeIndirectRadianceRadeonRays(positionsPtr, _integrationContext, positionOffset, positionCount, _pushoff,
241245
_bounceCount, directSampleCount, giSampleCount, envSampleCount, ignoreDirectEnvironment, ignoreIndirectEnvironment, rrContext, _progress, shPtr);
242246

Editor/Mono/GUI/PackageImportTreeView.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,7 @@ protected override void RenameEnded()
534534
private class PackageImportTreeViewDataSource : TreeViewDataSource
535535
{
536536
private PackageImportTreeView m_PackageImportView;
537+
private const string k_RootTreeItemName = "InvisibleAssetsFolder";
537538

538539
public PackageImportTreeViewDataSource(TreeViewController treeView, PackageImportTreeView view)
539540
: base(treeView)
@@ -559,7 +560,7 @@ public override bool IsExpandable(TreeViewItem item)
559560
public override void FetchData()
560561
{
561562
int rootDepth = -1; // -1 so its children will have 0 depth
562-
m_RootItem = new PackageImportTreeViewItem(null, "Assets".GetHashCode(), rootDepth, null, "InvisibleAssetsFolder");
563+
m_RootItem = new PackageImportTreeViewItem(null, k_RootTreeItemName.GetHashCode(), rootDepth, null, k_RootTreeItemName);
563564

564565
bool initExpandedState = true;
565566
if (initExpandedState)

Editor/Mono/ImportSettings/TextureImporterInspector.cs

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -932,27 +932,35 @@ void ElementsAtlasGui(TextureInspectorGUIElement guiElements)
932932
m_ShowElementsAtlasSettings.target = isLayerShape;
933933
if (EditorGUILayout.BeginFadeGroup(m_ShowElementsAtlasSettings.faded) && isLayerShape)
934934
{
935+
var isEditorTargetPreset = Presets.Preset.IsEditorTargetAPreset(target);
936+
935937
EditorGUI.indentLevel++;
936938
EditorGUI.BeginChangeCheck();
937939
EditorGUILayout.PropertyField(m_FlipbookColumns, s_Styles.flipbookColumns);
938940
if (EditorGUI.EndChangeCheck())
939941
{
940942
var val = m_FlipbookColumns.intValue;
941-
val = Mathf.Clamp(val, 1, m_TextureWidth);
943+
944+
// It happens when we are directly changing a TextureImporter preset and not an ImportSettings (targetting a 2D texture).
945+
// We don't wanna clamp the value to 'm_TextureWidth', or it will always be set to -1 since there's no texture targeted.
946+
val = Mathf.Clamp(val, 1, !isEditorTargetPreset ? m_TextureWidth : val);
942947
m_FlipbookColumns.intValue = val;
943948
}
944-
if (m_TextureWidth % m_FlipbookColumns.intValue != 0)
949+
if (!isEditorTargetPreset && m_TextureWidth % m_FlipbookColumns.intValue != 0)
945950
EditorGUILayout.HelpBox($"Image width {m_TextureWidth} does not divide into {m_FlipbookColumns.intValue} columns exactly", MessageType.Warning, true);
946951

947952
EditorGUI.BeginChangeCheck();
948953
EditorGUILayout.PropertyField(m_FlipbookRows, s_Styles.flipbookRows);
949954
if (EditorGUI.EndChangeCheck())
950955
{
951956
var val = m_FlipbookRows.intValue;
952-
val = Mathf.Clamp(val, 1, m_TextureHeight);
957+
958+
// It happens when we are directly changing a TextureImporter preset and not an ImportSettings (targetting a 2D texture).
959+
// We don't wanna clamp the value to 'm_TextureHeight', or it will always be set to -1 since there's no texture targeted.
960+
val = Mathf.Clamp(val, 1, !isEditorTargetPreset ? m_TextureHeight : val);
953961
m_FlipbookRows.intValue = val;
954962
}
955-
if (m_TextureHeight % m_FlipbookRows.intValue != 0)
963+
if (!isEditorTargetPreset && m_TextureHeight % m_FlipbookRows.intValue != 0)
956964
EditorGUILayout.HelpBox($"Image height {m_TextureHeight} does not divide into {m_FlipbookRows.intValue} rows exactly", MessageType.Warning, true);
957965
EditorGUI.indentLevel--;
958966
}

0 commit comments

Comments
 (0)