Skip to content

Commit f615184

Browse files
author
Unity Technologies
committed
Unity 2017.4.5f1 C# reference source code
1 parent 2e0112f commit f615184

File tree

8 files changed

+86
-59
lines changed

8 files changed

+86
-59
lines changed

Editor/Mono/VersionControl/Common/VCAssetModificationHooks.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -55,22 +55,23 @@ public static AssetMoveResult OnWillMoveAsset(string from, string to)
5555
if (asset == null || !asset.IsUnderVersionControl)
5656
return AssetMoveResult.DidNotMove;
5757

58-
if (asset.IsState(Asset.States.OutOfSync))
58+
Asset.States assetState = asset.state;
59+
if (Asset.IsState(assetState, Asset.States.OutOfSync))
5960
{
6061
Debug.LogError("Cannot move version controlled file that is not up to date. Please get latest changes from server");
6162
return AssetMoveResult.FailedMove;
6263
}
63-
else if (asset.IsState(Asset.States.DeletedRemote))
64+
else if (Asset.IsState(assetState, Asset.States.DeletedRemote))
6465
{
6566
Debug.LogError("Cannot move version controlled file that is deleted on server. Please get latest changes from server");
6667
return AssetMoveResult.FailedMove;
6768
}
68-
else if (asset.IsState(Asset.States.CheckedOutRemote))
69+
else if (Asset.IsState(assetState, Asset.States.CheckedOutRemote))
6970
{
7071
Debug.LogError("Cannot move version controlled file that is checked out on server. Please get latest changes from server");
7172
return AssetMoveResult.FailedMove;
7273
}
73-
else if (asset.IsState(Asset.States.LockedRemote))
74+
else if (Asset.IsState(assetState, Asset.States.LockedRemote))
7475
{
7576
Debug.LogError("Cannot move version controlled file that is locked on server. Please get latest changes from server");
7677
return AssetMoveResult.FailedMove;

Editor/Mono/VersionControl/UI/VCListControl.cs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -813,10 +813,20 @@ void DrawItem(ListItem item, Rect area, float x, float y, bool focus, bool selec
813813

814814
if (item.Asset != null)
815815
{
816-
Rect overlayRect = iconRect;
817-
overlayRect.width += 12;
818-
overlayRect.x -= 6;
819-
Overlay.DrawOverlay(item.Asset, overlayRect);
816+
bool drawOverlay = true;
817+
string vcsType = EditorSettings.externalVersionControl;
818+
if (vcsType == ExternalVersionControl.Disabled ||
819+
vcsType == ExternalVersionControl.AutoDetect ||
820+
vcsType == ExternalVersionControl.Generic)
821+
drawOverlay = false; // no overlays for these version control systems
822+
823+
if (drawOverlay)
824+
{
825+
Rect overlayRect = iconRect;
826+
overlayRect.width += 12;
827+
overlayRect.x -= 6;
828+
Overlay.DrawOverlay(item.Asset, overlayRect);
829+
}
820830
}
821831
}
822832

Editor/Mono/VersionControl/UI/VCOverlay.cs

Lines changed: 30 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,6 @@ public static void DrawOverlay(Asset asset, Rect itemRect)
4040
if (Event.current.type != EventType.Repaint)
4141
return;
4242

43-
string vcsType = EditorSettings.externalVersionControl;
44-
if (vcsType == ExternalVersionControl.Disabled ||
45-
vcsType == ExternalVersionControl.AutoDetect ||
46-
vcsType == ExternalVersionControl.Generic)
47-
return; // no icons for these version control systems
48-
4943
DrawOverlays(asset, null, itemRect);
5044
}
5145

@@ -57,12 +51,6 @@ public static void DrawOverlay(Asset asset, Asset metaAsset, Rect itemRect)
5751
if (Event.current.type != EventType.Repaint)
5852
return;
5953

60-
string vcsType = EditorSettings.externalVersionControl;
61-
if (vcsType == ExternalVersionControl.Disabled ||
62-
vcsType == ExternalVersionControl.AutoDetect ||
63-
vcsType == ExternalVersionControl.Generic)
64-
return; // no icons for these version control systems
65-
6654
DrawOverlays(asset, metaAsset, itemRect);
6755
}
6856

@@ -112,120 +100,123 @@ static void DrawOverlays(Asset asset, Asset metaAsset, Rect itemRect)
112100
Rect bottomRight = new Rect(itemRect.xMax - iconWidth + offsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth);
113101
Rect syncRect = new Rect(itemRect.xMax - iconWidth + syncOffsetX, itemRect.yMax - iconWidth + offsetY, iconWidth, iconWidth);
114102

103+
Asset.States assetState = asset.state;
104+
Asset.States metaState = metaAsset != null ? metaAsset.state : Asset.States.None;
105+
115106
Asset.States unmodifiedState = Asset.States.Local | Asset.States.MetaFile | Asset.States.ReadOnly | Asset.States.Synced;
116-
bool isMetaUnmodifiedState = metaAsset == null || (metaAsset.state & unmodifiedState) == unmodifiedState;
107+
bool isMetaUnmodifiedState = metaAsset == null || (metaState & unmodifiedState) == unmodifiedState;
117108

118-
Asset.States localMetaState = metaAsset == null ? Asset.States.None : metaAsset.state & (Asset.States.AddedLocal | Asset.States.CheckedOutLocal | Asset.States.DeletedLocal | Asset.States.LockedLocal);
119-
Asset.States remoteMetaState = metaAsset == null ? Asset.States.None : metaAsset.state & (Asset.States.AddedRemote | Asset.States.CheckedOutRemote | Asset.States.DeletedRemote | Asset.States.LockedRemote);
109+
Asset.States localMetaState = metaAsset == null ? Asset.States.None : metaState & (Asset.States.AddedLocal | Asset.States.CheckedOutLocal | Asset.States.DeletedLocal | Asset.States.LockedLocal);
110+
Asset.States remoteMetaState = metaAsset == null ? Asset.States.None : metaState & (Asset.States.AddedRemote | Asset.States.CheckedOutRemote | Asset.States.DeletedRemote | Asset.States.LockedRemote);
120111

121112
bool keepFolderMetaParans = asset.isFolder && Provider.isVersioningFolders;
122113

123114
// Local state overlay
124-
if (asset.IsState(Asset.States.AddedLocal))
115+
if (Asset.IsState(assetState, Asset.States.AddedLocal))
125116
{
126117
DrawOverlay(Asset.States.AddedLocal, topLeft);
127118

128119
// Meta overlay if meta file is not added or already in repo and unmodified.
129120
if (metaAsset != null && (localMetaState & Asset.States.AddedLocal) == 0 && !isMetaUnmodifiedState)
130121
DrawMetaOverlay(topLeft, false);
131122
}
132-
else if (asset.IsState(Asset.States.DeletedLocal))
123+
else if (Asset.IsState(assetState, Asset.States.DeletedLocal))
133124
{
134125
DrawOverlay(Asset.States.DeletedLocal, topLeft);
135126

136127
// Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there)
137-
if (metaAsset != null && (localMetaState & Asset.States.DeletedLocal) == 0 && metaAsset.IsState(Asset.States.Local | Asset.States.Missing))
128+
if (metaAsset != null && (localMetaState & Asset.States.DeletedLocal) == 0 && Asset.IsState(metaState, Asset.States.Local | Asset.States.Missing))
138129
DrawMetaOverlay(topLeft, false);
139130
}
140-
else if (asset.IsState(Asset.States.LockedLocal))
131+
else if (Asset.IsState(assetState, Asset.States.LockedLocal))
141132
{
142133
DrawOverlay(Asset.States.LockedLocal, topLeft);
143134

144135
// Meta overlay if meta file is not locked or unmodified.
145136
if (metaAsset != null && (localMetaState & Asset.States.LockedLocal) == 0 && !isMetaUnmodifiedState)
146137
DrawMetaOverlay(topLeft, false);
147138
}
148-
else if (asset.IsState(Asset.States.CheckedOutLocal))
139+
else if (Asset.IsState(assetState, Asset.States.CheckedOutLocal))
149140
{
150141
DrawOverlay(Asset.States.CheckedOutLocal, topLeft);
151142

152143
// Meta overlay if meta file is not checked out or unmodified.
153144
if (metaAsset != null && (localMetaState & Asset.States.CheckedOutLocal) == 0 && !isMetaUnmodifiedState)
154145
DrawMetaOverlay(topLeft, false);
155146
}
156-
else if (asset.IsState(Asset.States.Local) && !(asset.IsState(Asset.States.OutOfSync) || asset.IsState(Asset.States.Synced)))
147+
else if (Asset.IsState(assetState, Asset.States.Local) && !(Asset.IsState(assetState, Asset.States.OutOfSync) || Asset.IsState(assetState, Asset.States.Synced)))
157148
{
158149
DrawOverlay(Asset.States.Local, bottomLeft);
159150

160151
// Meta overlay if meta file is not local only or unmodified.
161-
if (metaAsset != null && (metaAsset.IsUnderVersionControl || !metaAsset.IsState(Asset.States.Local)))
152+
if (metaAsset != null && (metaAsset.IsUnderVersionControl || !Asset.IsState(metaState, Asset.States.Local)))
162153
DrawMetaOverlay(bottomLeft, false);
163154
}
164155
// From here the local asset have no state that need a local state overlay. We use the meta state if there is one instead.
165-
else if (metaAsset != null && metaAsset.IsState(Asset.States.AddedLocal))
156+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.AddedLocal))
166157
{
167158
DrawOverlay(Asset.States.AddedLocal, topLeft);
168159
if (keepFolderMetaParans)
169160
DrawMetaOverlay(topLeft, false);
170161
}
171-
else if (metaAsset != null && metaAsset.IsState(Asset.States.DeletedLocal))
162+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.DeletedLocal))
172163
{
173164
DrawOverlay(Asset.States.DeletedLocal, topLeft);
174165
if (keepFolderMetaParans)
175166
DrawMetaOverlay(topLeft, false);
176167
}
177-
else if (metaAsset != null && metaAsset.IsState(Asset.States.LockedLocal))
168+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.LockedLocal))
178169
{
179170
DrawOverlay(Asset.States.LockedLocal, topLeft);
180171
if (keepFolderMetaParans)
181172
DrawMetaOverlay(topLeft, false);
182173
}
183-
else if (metaAsset != null && metaAsset.IsState(Asset.States.CheckedOutLocal))
174+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.CheckedOutLocal))
184175
{
185176
DrawOverlay(Asset.States.CheckedOutLocal, topLeft);
186177
if (keepFolderMetaParans)
187178
DrawMetaOverlay(topLeft, false);
188179
}
189-
else if (metaAsset != null && metaAsset.IsState(Asset.States.Local) && !(metaAsset.IsState(Asset.States.OutOfSync) || metaAsset.IsState(Asset.States.Synced))
190-
&& !(asset.IsState(Asset.States.Conflicted) || (metaAsset != null && metaAsset.IsState(Asset.States.Conflicted))))
180+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.Local) && !(Asset.IsState(metaState, Asset.States.OutOfSync) || Asset.IsState(metaState, Asset.States.Synced))
181+
&& !(Asset.IsState(assetState, Asset.States.Conflicted) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Conflicted))))
191182
{
192183
DrawOverlay(Asset.States.Local, bottomLeft);
193184
if (keepFolderMetaParans)
194185
DrawMetaOverlay(bottomLeft, false);
195186
}
196187

197-
if (asset.IsState(Asset.States.Conflicted) || (metaAsset != null && metaAsset.IsState(Asset.States.Conflicted)))
188+
if (Asset.IsState(assetState, Asset.States.Conflicted) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Conflicted)))
198189
DrawOverlay(Asset.States.Conflicted, bottomLeft);
199190

200-
if ((asset.isFolder == false && asset.IsState(Asset.States.Updating)) || (metaAsset != null && metaAsset.IsState(Asset.States.Updating)))
191+
if ((asset.isFolder == false && Asset.IsState(assetState, Asset.States.Updating)) || (metaAsset != null && Asset.IsState(metaState, Asset.States.Updating)))
201192
DrawOverlay(Asset.States.Updating, bottomRight);
202193

203194
// Remote state overlay
204-
if (asset.IsState(Asset.States.AddedRemote))
195+
if (Asset.IsState(assetState, Asset.States.AddedRemote))
205196
{
206197
DrawOverlay(Asset.States.AddedRemote, topRight);
207198

208199
// Meta overlay if meta file is not added or already in repo and unmodified.
209200
if (metaAsset != null && (remoteMetaState & Asset.States.AddedRemote) == 0)
210201
DrawMetaOverlay(topRight, true);
211202
}
212-
else if (asset.IsState(Asset.States.DeletedRemote))
203+
else if (Asset.IsState(assetState, Asset.States.DeletedRemote))
213204
{
214205
DrawOverlay(Asset.States.DeletedRemote, topRight);
215206

216207
// Meta overlay if meta file is not deleted but asset is and meta file is still present or missing (ie. should have been there)
217208
if (metaAsset != null && (remoteMetaState & Asset.States.DeletedRemote) == 0)
218209
DrawMetaOverlay(topRight, true);
219210
}
220-
else if (asset.IsState(Asset.States.LockedRemote))
211+
else if (Asset.IsState(assetState, Asset.States.LockedRemote))
221212
{
222213
DrawOverlay(Asset.States.LockedRemote, topRight);
223214

224215
// Meta overlay if meta file is not locked or unmodified.
225216
if (metaAsset != null && (remoteMetaState & Asset.States.LockedRemote) == 0)
226217
DrawMetaOverlay(topRight, true);
227218
}
228-
else if (asset.IsState(Asset.States.CheckedOutRemote))
219+
else if (Asset.IsState(assetState, Asset.States.CheckedOutRemote))
229220
{
230221
DrawOverlay(Asset.States.CheckedOutRemote, topRight);
231222

@@ -234,32 +225,32 @@ static void DrawOverlays(Asset asset, Asset metaAsset, Rect itemRect)
234225
DrawMetaOverlay(topRight, true);
235226
}
236227
// From here the remote asset have no state that need a remote state overlay. We use the meta state if there is one instead.
237-
else if (metaAsset != null && metaAsset.IsState(Asset.States.AddedRemote))
228+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.AddedRemote))
238229
{
239230
DrawOverlay(Asset.States.AddedRemote, topRight);
240231
if (keepFolderMetaParans)
241232
DrawMetaOverlay(topRight, true);
242233
}
243-
else if (metaAsset != null && metaAsset.IsState(Asset.States.DeletedRemote))
234+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.DeletedRemote))
244235
{
245236
DrawOverlay(Asset.States.DeletedRemote, topRight);
246237
if (keepFolderMetaParans)
247238
DrawMetaOverlay(topRight, true);
248239
}
249-
else if (metaAsset != null && metaAsset.IsState(Asset.States.LockedRemote))
240+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.LockedRemote))
250241
{
251242
DrawOverlay(Asset.States.LockedRemote, topRight);
252243
if (keepFolderMetaParans)
253244
DrawMetaOverlay(topRight, true);
254245
}
255-
else if (metaAsset != null && metaAsset.IsState(Asset.States.CheckedOutRemote))
246+
else if (metaAsset != null && Asset.IsState(metaState, Asset.States.CheckedOutRemote))
256247
{
257248
DrawOverlay(Asset.States.CheckedOutRemote, topRight);
258249
if (keepFolderMetaParans)
259250
DrawMetaOverlay(topRight, true);
260251
}
261252

262-
if (asset.IsState(Asset.States.OutOfSync) || (metaAsset != null && metaAsset.IsState(Asset.States.OutOfSync)))
253+
if (Asset.IsState(assetState, Asset.States.OutOfSync) || (metaAsset != null && Asset.IsState(metaState, Asset.States.OutOfSync)))
263254
DrawOverlay(Asset.States.OutOfSync, syncRect);
264255
}
265256

Editor/Mono/VersionControl/UI/VCProjectHooks.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
using UnityEngine;
66
using UnityEditor.VersionControl;
7+
using UnityEditor;
78

89
namespace UnityEditorInternal.VersionControl
910
{
@@ -16,6 +17,12 @@ public static void OnProjectWindowItem(string guid, Rect drawRect)
1617
if (!Provider.isActive)
1718
return;
1819

20+
string vcsType = EditorSettings.externalVersionControl;
21+
if (vcsType == ExternalVersionControl.Disabled ||
22+
vcsType == ExternalVersionControl.AutoDetect ||
23+
vcsType == ExternalVersionControl.Generic)
24+
return; // no icons for these version control systems
25+
1926
Asset asset = Provider.GetAssetByGUID(guid);
2027
if (asset != null)
2128
{

Modules/UnityWebRequest/Public/UnityWebRequest.bindings.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,8 @@ private void DisposeHandlers()
190190
public UnityWebRequestAsyncOperation SendWebRequest()
191191
{
192192
UnityWebRequestAsyncOperation webOp = BeginWebRequest();
193-
webOp.webRequest = this;
193+
if (webOp != null)
194+
webOp.webRequest = this;
194195
return webOp;
195196
}
196197

Modules/UnityWebRequest/Public/WebRequestUtils.cs

Lines changed: 26 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -547,14 +547,14 @@ internal static string MakeUriString(Uri targetUri, string targetUrl, bool prepe
547547
// for file://protocol pass in unescaped string so we can pass it to VFS
548548
if (targetUrl.StartsWith("file://", StringComparison.OrdinalIgnoreCase))
549549
{
550-
if (targetUrl.Contains("%"))
551-
{
552-
var urlBytes = Encoding.UTF8.GetBytes(targetUrl);
553-
var decodedBytes = UnityEngine.WWWTranscoder.URLDecode(urlBytes);
554-
return Encoding.UTF8.GetString(decodedBytes);
555-
}
556-
else
557-
return targetUrl;
550+
if (!targetUri.IsLoopback)
551+
return targetUri.OriginalString;
552+
string path = targetUri.AbsolutePath;
553+
if (path.Contains("%"))
554+
path = URLDecode(path);
555+
if (path.Length > 0 && path[0] != '/')
556+
path = '/' + path;
557+
return "file://" + path;
558558
}
559559

560560
// if URL contains '%', assume it is properly escaped, otherwise '%2f' gets unescaped as '/' (which may not be correct)
@@ -571,12 +571,29 @@ internal static string MakeUriString(Uri targetUri, string targetUrl, bool prepe
571571
{
572572
StringBuilder sb = new StringBuilder(scheme, targetUrl.Length);
573573
sb.Append(':');
574-
sb.Append(targetUri.PathAndQuery); // for these spec URIs path also has the part of URI to right of colon
574+
// for these spec URIs path also has the part of URI to right of colon
575+
// jar:file URIs should be treated like file URIs (unescaped and stripped of query&fragment)
576+
if (scheme == "jar")
577+
{
578+
string path = targetUri.AbsolutePath;
579+
if (path.Contains("%"))
580+
path = URLDecode(path);
581+
sb.Append(path);
582+
return sb.ToString();
583+
}
584+
sb.Append(targetUri.PathAndQuery);
575585
sb.Append(targetUri.Fragment);
576586
return sb.ToString();
577587
}
578588

579589
return targetUri.AbsoluteUri;
580590
}
591+
592+
static string URLDecode(string encoded)
593+
{
594+
var urlBytes = Encoding.UTF8.GetBytes(encoded);
595+
var decodedBytes = UnityEngine.WWWTranscoder.URLDecode(urlBytes);
596+
return Encoding.UTF8.GetString(decodedBytes);
597+
}
581598
}
582599
}

Modules/UnityWebRequestWWW/Public/WWW.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,7 @@ private string GetStatusCodeName(long statusCode)
443443
return "Unsupported Media Type";
444444
case 416:
445445
return "Requested Range Not Satisfiable";
446-
case 41:
446+
case 417:
447447
return "Expectation Failed";
448448
case 500:
449449
return "Internal Server Error";

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
## Unity 2017.4.4f1 C# reference source code
1+
## Unity 2017.4.5f1 C# reference source code
22

33
The C# part of the Unity engine and editor source code.
44
May be used for reference purposes only.

0 commit comments

Comments
 (0)