Skip to content

Commit 54dd67f

Browse files
author
Unity Technologies
committed
Unity 2018.2.0b10 C# reference source code
1 parent 96187e5 commit 54dd67f

22 files changed

Lines changed: 204 additions & 53 deletions

Editor/Mono/BuildPipeline.bindings.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -512,7 +512,7 @@ internal static string GetPlaybackEngineDirectory(BuildTarget target, BuildOptio
512512
[FreeFunction(IsThreadSafe = true)]
513513
internal static extern string GetPlaybackEngineExtensionDirectory(BuildTargetGroup buildTargetGroup, BuildTarget target, BuildOptions options);
514514

515-
internal static extern void SetPlaybackEngineDirectory(BuildTarget target, BuildOptions options, string playbackEngineDirectory);
515+
internal static extern void SetPlaybackEngineDirectory(BuildTargetGroup targetGroup, BuildTarget target, BuildOptions options, string playbackEngineDirectory);
516516

517517
[FreeFunction(IsThreadSafe = true)]
518518
internal static extern string GetBuildToolsDirectory(BuildTarget target);
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
// Unity C# reference source
2+
// Copyright (c) Unity Technologies. For terms of use, see
3+
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
4+
5+
using System;
6+
using System.Collections.Generic;
7+
using UnityEditor.Build;
8+
using UnityEngine;
9+
10+
namespace UnityEditor.Android
11+
{
12+
public interface IPostGenerateGradleAndroidProject : IOrderedCallback
13+
{
14+
void OnPostGenerateGradleAndroidProject(string path);
15+
}
16+
17+
internal static class AndroidBuildPipelineInterfaces
18+
{
19+
private static List<IPostGenerateGradleAndroidProject> buildPostProjectGeneratedProcessors;
20+
21+
internal static void InitializeBuildCallbacks()
22+
{
23+
buildPostProjectGeneratedProcessors = new List<IPostGenerateGradleAndroidProject>();
24+
25+
foreach (var type in EditorAssemblies.GetAllTypesWithInterface<IPostGenerateGradleAndroidProject>())
26+
{
27+
if (type.IsAbstract || type.IsInterface)
28+
continue;
29+
buildPostProjectGeneratedProcessors.Add(Activator.CreateInstance(type) as IPostGenerateGradleAndroidProject);
30+
}
31+
32+
buildPostProjectGeneratedProcessors.Sort(BuildPipelineInterfaces.CompareICallbackOrder);
33+
}
34+
35+
internal static void OnGeneratePlatformProjectPostprocess(string path, bool strict)
36+
{
37+
if (buildPostProjectGeneratedProcessors != null)
38+
{
39+
foreach (var pggapp in buildPostProjectGeneratedProcessors)
40+
{
41+
try
42+
{
43+
pggapp.OnPostGenerateGradleAndroidProject(path);
44+
}
45+
catch (Exception ex)
46+
{
47+
Debug.LogException(ex);
48+
if (strict)
49+
throw;
50+
}
51+
}
52+
}
53+
}
54+
}
55+
}

Editor/Mono/BuildPlayerWindow.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -488,7 +488,8 @@ static bool IsColorSpaceValid(BuildPlatform platform)
488488
{ "OSXStandalone", "Mac" },
489489
{ "WindowsStandalone", "Windows" },
490490
{ "LinuxStandalone", "Linux" },
491-
{ "Facebook", "Facebook-Games"}
491+
{ "Facebook", "Facebook-Games"},
492+
{ "Metro", "UWP-IL2CPP"}
492493
};
493494
static public string GetPlaybackEngineDownloadURL(string moduleName)
494495
{

Editor/Mono/Commands/GOCreationCommands.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ static void CreateAreaLight(MenuCommand menuCommand)
183183
var go = CreateGameObject(null, "Area Light", typeof(Light));
184184

185185
go.GetComponent<Light>().type = LightType.Area;
186+
go.GetComponent<Light>().shadows = LightShadows.Soft;
186187
go.GetComponent<Transform>().SetLocalEulerAngles(new Vector3(90, 0, 0), RotationOrder.OrderZXY);
187188

188189
Place(go, parent);

Editor/Mono/ContainerWindow.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,7 @@ public void Close()
163163
// Guard against destroy window or window in the process of being destroyed.
164164
if (this && m_WindowPtr.m_IntPtr != IntPtr.Zero)
165165
InternalClose();
166+
DestroyImmediate(this, true);
166167
}
167168

168169
internal bool IsNotDocked()

Editor/Mono/EditorApplication.bindings.cs

Lines changed: 6 additions & 3 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 UnityEditor.Scripting.ScriptCompilation;
67
using UnityEngine;
78
using UnityEngine.Bindings;
89
using Object = UnityEngine.Object;
@@ -72,10 +73,12 @@ public static extern bool isPaused
7273
}
7374

7475
// Is editor currently compiling scripts? (RO)
75-
public static extern bool isCompiling
76+
public static bool isCompiling
7677
{
77-
[FreeFunction("IsCompiling")]
78-
get;
78+
get
79+
{
80+
return EditorCompilationInterface.IsCompiling();
81+
}
7982
}
8083

8184
// Is editor currently updating? (RO)

Editor/Mono/GUI/TreeView/TreeViewControl/TreeViewControl.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,13 @@ namespace UnityEditor.IMGUI.Controls
2121

2222
public abstract partial class TreeView
2323
{
24+
public delegate List<int> GetNewSelectionFunction(TreeViewItem clickedItem, bool keepMultiSelection, bool useActionKeyAsShift);
25+
26+
protected GetNewSelectionFunction getNewSelectionOverride
27+
{
28+
set { m_TreeView.getNewSelectionOverride = (x, y, z) => value(x, y, z); }
29+
}
30+
2431
TreeViewController m_TreeView;
2532
TreeViewControlDataSource m_DataSource;
2633
TreeViewControlGUI m_GUI;

Editor/Mono/GUI/TreeView/TreeViewController.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
// Copyright (c) Unity Technologies. For terms of use, see
33
// https://unity3d.com/legal/licenses/Unity_Reference_Only_License
44

5+
using System;
56
using System.Collections.Generic;
67
using System.Linq;
78
using UnityEditor.AnimatedValues;
@@ -27,7 +28,6 @@ namespace UnityEditor.IMGUI.Controls
2728
2829
*/
2930

30-
3131
[System.Serializable]
3232
public class TreeViewState
3333
{
@@ -1124,9 +1124,13 @@ bool GetFirstAndLastSelected(List<TreeViewItem> items, out int firstIndex, out i
11241124
return firstIndex != -1 && lastIndex != -1;
11251125
}
11261126

1127+
public Func<TreeViewItem, bool, bool, List<int>> getNewSelectionOverride { private get; set; }
1128+
11271129
// Returns list of selected ids
11281130
List<int> GetNewSelection(TreeViewItem clickedItem, bool keepMultiSelection, bool useShiftAsActionKey)
11291131
{
1132+
if (getNewSelectionOverride != null)
1133+
return getNewSelectionOverride(clickedItem, keepMultiSelection, useShiftAsActionKey);
11301134
// Get ids from items
11311135
var visibleRows = data.GetRows();
11321136
List<int> allIDs = new List<int>(visibleRows.Count);

Editor/Mono/Inspector/CameraEditor.cs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -632,6 +632,12 @@ public virtual void OnOverlayGUI(Object target, SceneView sceneView)
632632

633633
// Apply normalizedviewport rect of camera
634634
Rect normalizedViewPortRect = c.rect;
635+
// clamp normalized rect in [0,1]
636+
normalizedViewPortRect.xMin = Math.Max(normalizedViewPortRect.xMin, 0f);
637+
normalizedViewPortRect.yMin = Math.Max(normalizedViewPortRect.yMin, 0f);
638+
normalizedViewPortRect.xMax = Math.Min(normalizedViewPortRect.xMax, 1f);
639+
normalizedViewPortRect.yMax = Math.Min(normalizedViewPortRect.yMax, 1f);
640+
635641
previewSize.x *= Mathf.Max(normalizedViewPortRect.width, 0f);
636642
previewSize.y *= Mathf.Max(normalizedViewPortRect.height, 0f);
637643

@@ -741,7 +747,7 @@ public virtual void OnSceneGUI()
741747

742748
SceneViewOverlay.Window(EditorGUIUtility.TrTextContent("Camera Preview"), OnOverlayGUI, (int)SceneViewOverlay.Ordering.Camera, target, SceneViewOverlay.WindowDisplayOption.OneWindowPerTarget);
743749

744-
CameraEditorUtils.HandleFrustum(c);
750+
CameraEditorUtils.HandleFrustum(c, referenceTargetIndex);
745751
}
746752
}
747753
}

Editor/Mono/Inspector/CameraEditorUtils.cs

Lines changed: 59 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,20 @@ public static class CameraEditorUtils
1515

1616
static int s_MovingHandleId = 0;
1717
static Vector3 s_InitialFarMid;
18-
static readonly int[] s_FrustrumHandleIds =
18+
static readonly int[] s_FrustumHandleIds =
1919
{
20-
"CameraEditor_FrustrumHandleTop".GetHashCode(),
21-
"CameraEditor_FrustrumHandleBottom".GetHashCode(),
22-
"CameraEditor_FrustrumHandleLeft".GetHashCode(),
23-
"CameraEditor_FrustrumHandleRight".GetHashCode()
20+
"CameraEditor_FrustumHandleTop".GetHashCode(),
21+
"CameraEditor_FrustumHandleBottom".GetHashCode(),
22+
"CameraEditor_FrustumHandleLeft".GetHashCode(),
23+
"CameraEditor_FrustumHandleRight".GetHashCode()
2424
};
2525

2626
public static void HandleFrustum(Camera c)
27+
{
28+
HandleFrustum(c, 0);
29+
}
30+
31+
public static void HandleFrustum(Camera c, int cameraEditorTargetIndex)
2732
{
2833
Color orgHandlesColor = Handles.color;
2934
Color slidersColor = k_ColorThemeCameraGizmo;
@@ -47,12 +52,12 @@ public static void HandleFrustum(Camera c)
4752
Vector3 farMid = Vector3.Lerp(leftBottomFar, rightTopFar, 0.5f);
4853
if (s_MovingHandleId != 0)
4954
{
50-
if (!s_FrustrumHandleIds.Contains(GUIUtility.hotControl))
55+
if (!s_FrustumHandleIds.Contains(GUIUtility.hotControl - cameraEditorTargetIndex))
5156
s_MovingHandleId = GUIUtility.hotControl;
5257
else
5358
farMid = s_InitialFarMid;
5459
}
55-
else if (s_FrustrumHandleIds.Contains(GUIUtility.hotControl))
60+
else if (s_FrustumHandleIds.Contains(GUIUtility.hotControl - cameraEditorTargetIndex))
5661
{
5762
s_MovingHandleId = GUIUtility.hotControl;
5863
s_InitialFarMid = farMid;
@@ -61,17 +66,17 @@ public static void HandleFrustum(Camera c)
6166
// FOV handles
6267
// Top and bottom handles
6368
float halfHeight = -1.0f;
64-
Vector3 changedPosition = MidPointPositionSlider(s_FrustrumHandleIds[0], leftTopFar, rightTopFar, c.transform.up);
69+
Vector3 changedPosition = MidPointPositionSlider(s_FrustumHandleIds[0] + cameraEditorTargetIndex, leftTopFar, rightTopFar, c.transform.up);
6570
if (!GUI.changed)
66-
changedPosition = MidPointPositionSlider(s_FrustrumHandleIds[1], leftBottomFar, rightBottomFar, -c.transform.up);
71+
changedPosition = MidPointPositionSlider(s_FrustumHandleIds[1] + cameraEditorTargetIndex, leftBottomFar, rightBottomFar, -c.transform.up);
6772
if (GUI.changed)
6873
halfHeight = (changedPosition - farMid).magnitude;
6974

7075
// Left and right handles
7176
GUI.changed = false;
72-
changedPosition = MidPointPositionSlider(s_FrustrumHandleIds[2], rightBottomFar, rightTopFar, c.transform.right);
77+
changedPosition = MidPointPositionSlider(s_FrustumHandleIds[2] + cameraEditorTargetIndex, rightBottomFar, rightTopFar, c.transform.right);
7378
if (!GUI.changed)
74-
changedPosition = MidPointPositionSlider(s_FrustrumHandleIds[3], leftBottomFar, leftTopFar, -c.transform.right);
79+
changedPosition = MidPointPositionSlider(s_FrustumHandleIds[3] + cameraEditorTargetIndex, leftBottomFar, leftTopFar, -c.transform.right);
7580
if (GUI.changed)
7681
halfHeight = (changedPosition - farMid).magnitude / frustumAspect;
7782

@@ -126,26 +131,56 @@ public static bool TryGetFrustum(Camera camera, Vector3[] near, Vector3[] far, o
126131

127132
if (far != null)
128133
{
129-
far[0] = new Vector3(0, 0, camera.farClipPlane); // leftBottomFar
130-
far[1] = new Vector3(0, 1, camera.farClipPlane); // leftTopFar
131-
far[2] = new Vector3(1, 1, camera.farClipPlane); // rightTopFar
132-
far[3] = new Vector3(1, 0, camera.farClipPlane); // rightBottomFar
133-
for (int i = 0; i < 4; ++i)
134-
far[i] = camera.ViewportToWorldPointWithoutGateFit(far[i]);
134+
if (camera.projectionMatrixMode == (int)Camera.ProjectionMatrixMode.Explicit)
135+
{
136+
far[0] = new Vector3(0, 0, camera.farClipPlane); // leftBottomFar
137+
far[1] = new Vector3(0, 1, camera.farClipPlane); // leftTopFar
138+
far[2] = new Vector3(1, 1, camera.farClipPlane); // rightTopFar
139+
far[3] = new Vector3(1, 0, camera.farClipPlane); // rightBottomFar
140+
for (int i = 0; i < 4; ++i)
141+
far[i] = camera.ViewportToWorldPoint(far[i]);
142+
}
143+
else
144+
{
145+
CalculateFrustumPlaneAt(camera, camera.farClipPlane, far);
146+
}
135147
}
136148

137149
if (near != null)
138150
{
139-
near[0] = new Vector3(0, 0, camera.nearClipPlane); // leftBottomNear
140-
near[1] = new Vector3(0, 1, camera.nearClipPlane); // leftTopNear
141-
near[2] = new Vector3(1, 1, camera.nearClipPlane); // rightTopNear
142-
near[3] = new Vector3(1, 0, camera.nearClipPlane); // rightBottomNear
143-
for (int i = 0; i < 4; ++i)
144-
near[i] = camera.ViewportToWorldPointWithoutGateFit(near[i]);
151+
if (camera.projectionMatrixMode == (int)Camera.ProjectionMatrixMode.Explicit)
152+
{
153+
near[0] = new Vector3(0, 0, camera.nearClipPlane); // leftBottomNear
154+
near[1] = new Vector3(0, 1, camera.nearClipPlane); // leftTopNear
155+
near[2] = new Vector3(1, 1, camera.nearClipPlane); // rightTopNear
156+
near[3] = new Vector3(1, 0, camera.nearClipPlane); // rightBottomNear
157+
for (int i = 0; i < 4; ++i)
158+
near[i] = camera.ViewportToWorldPoint(near[i]);
159+
}
160+
else
161+
{
162+
CalculateFrustumPlaneAt(camera, camera.nearClipPlane, near);
163+
}
145164
}
146165
return true;
147166
}
148167

168+
private static void CalculateFrustumPlaneAt(Camera camera, float distance, Vector3[] plane)
169+
{
170+
Vector2 planeSize = camera.GetFrustumPlaneSizeAt(distance) * .5f;
171+
Vector3 rightOffset = camera.gameObject.transform.right * planeSize.x;
172+
Vector3 upOffset = camera.gameObject.transform.up * planeSize.y;
173+
Vector3 localAim = camera.GetLocalSpaceAim() * distance;
174+
localAim.z = -localAim.z;
175+
176+
Vector3 planePosition = camera.cameraToWorldMatrix.MultiplyPoint(localAim);
177+
178+
plane[0] = planePosition - rightOffset - upOffset; // leftBottom
179+
plane[1] = planePosition - rightOffset + upOffset; // leftTop
180+
plane[2] = planePosition + rightOffset + upOffset; // rightTop
181+
plane[3] = planePosition + rightOffset - upOffset; // rightBottom
182+
}
183+
149184
public static bool IsViewportRectValidToRender(Rect normalizedViewPortRect)
150185
{
151186
if (normalizedViewPortRect.width <= 0f || normalizedViewPortRect.height <= 0f)
@@ -163,8 +198,7 @@ public static float GetFrustumAspectRatio(Camera camera)
163198
if (normalizedViewPortRect.width <= 0f || normalizedViewPortRect.height <= 0f)
164199
return -1f;
165200

166-
return camera.usePhysicalProperties ?
167-
camera.sensorSize.x / camera.sensorSize.y : GameViewAspectRatio * normalizedViewPortRect.width / normalizedViewPortRect.height;
201+
return GameViewAspectRatio * normalizedViewPortRect.width / normalizedViewPortRect.height;
168202
}
169203

170204
public static Vector3 PerspectiveClipToWorld(Matrix4x4 clipToWorld, Vector3 viewPositionWS, Vector3 positionCS)

0 commit comments

Comments
 (0)