Skip to content

Commit 3a75391

Browse files
author
Unity Technologies
committed
Unity 2018.1.0a6 C# reference source code
1 parent 12de761 commit 3a75391

740 files changed

Lines changed: 14447 additions & 8948 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.
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
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 UnityEngine;
6+
using UnityEditor;
7+
using UnityEngine.Bindings;
8+
9+
namespace UnityEditor.Experimental.U2D
10+
{
11+
[NativeHeader("Editor/Src/2D/SpriteEditorExtension.h")]
12+
public static class SpriteEditorExtension
13+
{
14+
public static GUID GetSpriteID(this Sprite sprite)
15+
{
16+
return new GUID(GetSpriteIDScripting(sprite));
17+
}
18+
19+
[FreeFunction("SpriteEditorExtension::GetSpriteIDScripting")]
20+
private static extern string GetSpriteIDScripting(Sprite sprite);
21+
}
22+
}

Editor/Mono/2D/Common/TexturePlatformSettingsView.cs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,22 +11,22 @@ internal class TexturePlatformSettingsView : ITexturePlatformSettingsView
1111
{
1212
class Styles
1313
{
14-
public readonly GUIContent textureFormatLabel = EditorGUIUtility.TextContent("Format");
15-
public readonly GUIContent maxTextureSizeLabel = EditorGUIUtility.TextContent("Max Texture Size|Maximum size of the packed texture.");
16-
public readonly GUIContent compressionLabel = EditorGUIUtility.TextContent("Compression|How will this texture be compressed?");
17-
public readonly GUIContent useCrunchedCompressionLabel = EditorGUIUtility.TextContent("Use Crunch Compression|Texture is crunch-compressed to save space on disk when applicable.");
18-
public readonly GUIContent compressionQualityLabel = EditorGUIUtility.TextContent("Compressor Quality");
19-
public readonly GUIContent compressionQualitySliderLabel = EditorGUIUtility.TextContent("Compressor Quality|Use the slider to adjust compression quality from 0 (Fastest) to 100 (Best)");
14+
public readonly GUIContent textureFormatLabel = EditorGUIUtility.TrTextContent("Format");
15+
public readonly GUIContent maxTextureSizeLabel = EditorGUIUtility.TrTextContent("Max Texture Size", "Maximum size of the packed texture.");
16+
public readonly GUIContent compressionLabel = EditorGUIUtility.TrTextContent("Compression", "How will this texture be compressed?");
17+
public readonly GUIContent useCrunchedCompressionLabel = EditorGUIUtility.TrTextContent("Use Crunch Compression", "Texture is crunch-compressed to save space on disk when applicable.");
18+
public readonly GUIContent compressionQualityLabel = EditorGUIUtility.TrTextContent("Compressor Quality");
19+
public readonly GUIContent compressionQualitySliderLabel = EditorGUIUtility.TrTextContent("Compressor Quality", "Use the slider to adjust compression quality from 0 (Fastest) to 100 (Best)");
2020

2121
public readonly int[] kMaxTextureSizeValues = { 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192 };
2222
public readonly GUIContent[] kMaxTextureSizeStrings;
2323

2424
public readonly GUIContent[] kTextureCompressionOptions =
2525
{
26-
EditorGUIUtility.TextContent("None|Texture is not compressed."),
27-
EditorGUIUtility.TextContent("Low Quality|Texture compressed with low quality but high performance, high compression format."),
28-
EditorGUIUtility.TextContent("Normal Quality|Texture is compressed with a standard format."),
29-
EditorGUIUtility.TextContent("High Quality|Texture compressed with a high quality format."),
26+
EditorGUIUtility.TrTextContent("None", "Texture is not compressed."),
27+
EditorGUIUtility.TrTextContent("Low Quality", "Texture compressed with low quality but high performance, high compression format."),
28+
EditorGUIUtility.TrTextContent("Normal Quality", "Texture is compressed with a standard format."),
29+
EditorGUIUtility.TrTextContent("High Quality", "Texture compressed with a high quality format."),
3030
};
3131

3232
public readonly int[] kTextureCompressionValues =
@@ -39,9 +39,9 @@ class Styles
3939

4040
public readonly GUIContent[] kMobileCompressionQualityOptions =
4141
{
42-
EditorGUIUtility.TextContent("Fast"),
43-
EditorGUIUtility.TextContent("Normal"),
44-
EditorGUIUtility.TextContent("Best")
42+
EditorGUIUtility.TrTextContent("Fast"),
43+
EditorGUIUtility.TrTextContent("Normal"),
44+
EditorGUIUtility.TrTextContent("Best")
4545
};
4646

4747
public Styles()

Editor/Mono/2D/Interface/IAssetImporter.cs

Lines changed: 113 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using UnityEngine;
66
using UnityEditor;
77
using System;
8+
using System.Linq;
89
using UnityEditor.Experimental.U2D;
910
using UnityEditor.U2D;
1011
using UnityAssetImporter = UnityEditor.AssetImporter;
@@ -15,12 +16,7 @@ namespace UnityEditor.U2D.Interface
1516
{
1617
internal abstract class ITextureImporter
1718
{
18-
public abstract void GetWidthAndHeight(ref int width, ref int height);
1919
public abstract SpriteImportMode spriteImportMode { get; }
20-
public abstract Vector4 spriteBorder { get; }
21-
public abstract Vector2 spritePivot { get; }
22-
23-
public abstract string assetPath { get; }
2420

2521
public static bool operator==(ITextureImporter t1, ITextureImporter t2)
2622
{
@@ -56,18 +52,16 @@ public override int GetHashCode()
5652
internal class TextureImporter : ITextureImporter, ISpriteEditorDataProvider
5753
{
5854
protected UnityAssetImporter m_AssetImporter;
59-
List<SpriteDataMultipleMode> m_SpritesMultiple;
60-
SpriteDataSingleMode m_SpriteSingle;
61-
SerializedObject m_TextureImporterSO;
55+
List<SpriteDataExt> m_SpritesMultiple;
56+
SpriteDataExt m_SpriteSingle;
57+
SpriteImportMode m_SpriteImportMode;
6258

6359
public TextureImporter(UnityTextureImporter textureImporter)
6460
{
6561
m_AssetImporter = textureImporter;
66-
}
67-
68-
public override string assetPath
69-
{
70-
get { return m_AssetImporter.assetPath; }
62+
m_SpriteImportMode = textureImporter.textureType != TextureImporterType.Sprite ?
63+
SpriteImportMode.None :
64+
textureImporter.spriteImportMode;
7165
}
7266

7367
public override bool Equals(object other)
@@ -83,122 +77,160 @@ public override int GetHashCode()
8377
return m_AssetImporter.GetHashCode();
8478
}
8579

86-
public override void GetWidthAndHeight(ref int width, ref int height)
87-
{
88-
((UnityTextureImporter)m_AssetImporter).GetWidthAndHeight(ref width, ref height);
89-
}
90-
9180
public override SpriteImportMode spriteImportMode
9281
{
93-
get { return ((UnityTextureImporter)m_AssetImporter).spriteImportMode; }
82+
get { return m_SpriteImportMode; }
9483
}
9584

96-
public override Vector4 spriteBorder
85+
// ISpriteEditorDataProvider interface
86+
public float pixelsPerUnit
9787
{
98-
get { return ((UnityTextureImporter)m_AssetImporter).spriteBorder; }
88+
get { return ((UnityTextureImporter)m_AssetImporter).spritePixelsPerUnit; }
9989
}
10090

101-
public override Vector2 spritePivot
91+
public UnityEngine.Object targetObject
10292
{
103-
get { return ((UnityTextureImporter)m_AssetImporter).spritePivot; }
93+
get { return m_AssetImporter; }
10494
}
10595

106-
public void InitSpriteEditorDataProvider(SerializedObject so)
96+
public SpriteRect[] GetSpriteRects()
10797
{
108-
m_TextureImporterSO = so;
109-
var spriteSheetSO = m_TextureImporterSO.FindProperty("m_SpriteSheet.m_Sprites");
110-
m_SpritesMultiple = new List<SpriteDataMultipleMode>();
111-
m_SpriteSingle = new SpriteDataSingleMode();
112-
m_SpriteSingle.Load(m_TextureImporterSO);
113-
for (int i = 0; i < spriteSheetSO.arraySize; ++i)
114-
{
115-
var data = new SpriteDataMultipleMode();
116-
var sp = spriteSheetSO.GetArrayElementAtIndex(i);
117-
data.Load(sp);
118-
m_SpritesMultiple.Add(data);
119-
}
98+
return spriteImportMode == SpriteImportMode.Multiple ? m_SpritesMultiple.Select(x => x as SpriteRect).ToArray() : new[] {m_SpriteSingle};
12099
}
121100

122-
public int spriteDataCount
101+
public void SetSpriteRects(SpriteRect[] spriteRects)
123102
{
124-
get
103+
if (spriteImportMode == SpriteImportMode.Single && spriteRects.Length == 1)
125104
{
126-
switch (spriteImportMode)
127-
{
128-
case SpriteImportMode.Multiple:
129-
return m_SpritesMultiple.Count;
130-
case SpriteImportMode.Single:
131-
case SpriteImportMode.Polygon:
132-
return 1;
133-
}
134-
return 0;
105+
m_SpriteSingle.CopyFromSpriteRect(spriteRects[0]);
135106
}
136-
137-
set
107+
else if (spriteImportMode == SpriteImportMode.Multiple)
138108
{
139-
if (spriteImportMode != SpriteImportMode.Multiple)
109+
for (int i = m_SpritesMultiple.Count - 1; i >= 0; --i)
140110
{
141-
Debug.LogError("SetSpriteDataSize can only be called when in SpriteImportMode.Multiple");
142-
return;
111+
if (!spriteRects.Contains(m_SpritesMultiple[i]))
112+
m_SpritesMultiple.RemoveAt(i);
143113
}
144-
145-
while (m_SpritesMultiple.Count < value)
146-
m_SpritesMultiple.Add(new SpriteDataMultipleMode());
147-
if (m_SpritesMultiple.Count > value)
114+
for (int i = 0; i < spriteRects.Length; i++)
148115
{
149-
var diff = m_SpritesMultiple.Count - value;
150-
m_SpritesMultiple.RemoveRange(m_SpritesMultiple.Count - diff, diff);
116+
var spriteRect = spriteRects[i];
117+
var index = m_SpritesMultiple.FindIndex(x => x.spriteID == spriteRect.spriteID);
118+
if (-1 == index)
119+
m_SpritesMultiple.Add(new SpriteDataExt(spriteRect));
120+
else
121+
m_SpritesMultiple[index].CopyFromSpriteRect(spriteRects[i]);
151122
}
152123
}
153124
}
154125

155-
public UnityEngine.Object targetObject
126+
public SpriteRect GetSpriteData(GUID guid)
156127
{
157-
get
158-
{
159-
return m_AssetImporter;
160-
}
128+
return spriteImportMode == SpriteImportMode.Multiple ? m_SpritesMultiple.Where(x => x.spriteID == guid).FirstOrDefault() : m_SpriteSingle;
161129
}
162130

163-
public SpriteDataBase GetSpriteData(int i)
131+
public int GetSpriteDataIndex(GUID guid)
164132
{
165133
switch (spriteImportMode)
166134
{
167-
case SpriteImportMode.Multiple:
168-
if (m_SpritesMultiple.Count > i)
169-
return m_SpritesMultiple[i];
170-
break;
171135
case SpriteImportMode.Single:
172136
case SpriteImportMode.Polygon:
173-
return m_SpriteSingle;
137+
return 0;
138+
case SpriteImportMode.Multiple:
139+
{
140+
return m_SpritesMultiple.FindIndex(x => x.spriteID == guid);
141+
}
142+
default:
143+
throw new InvalidOperationException("GUID not found");
174144
}
175-
return null;
176145
}
177146

178-
public void Apply(SerializedObject so)
147+
public void Apply()
179148
{
149+
var so = new SerializedObject(m_AssetImporter);
180150
m_SpriteSingle.Apply(so);
181-
182151
var spriteSheetSO = so.FindProperty("m_SpriteSheet.m_Sprites");
183-
for (int i = 0; i < m_SpritesMultiple.Count; ++i)
152+
GUID[] guids = new GUID[spriteSheetSO.arraySize];
153+
for (int i = 0; i < spriteSheetSO.arraySize; ++i)
184154
{
185-
if (spriteSheetSO.arraySize < m_SpritesMultiple.Count)
155+
var element = spriteSheetSO.GetArrayElementAtIndex(i);
156+
guids[i] = SpriteRect.GetSpriteIDFromSerializedProperty(element);
157+
// find the GUID in our sprite list and apply to it;
158+
var smd = m_SpritesMultiple.Find(x => x.spriteID == guids[i]);
159+
if (smd == null) // we can't find it, it is already deleted
186160
{
187-
spriteSheetSO.InsertArrayElementAtIndex(spriteSheetSO.arraySize);
161+
spriteSheetSO.DeleteArrayElementAtIndex(i);
162+
--i;
188163
}
164+
else
165+
smd.Apply(element);
166+
}
167+
168+
// Add new ones
169+
var newSprites = m_SpritesMultiple.Where(x => !guids.Contains(x.spriteID));
170+
foreach (var newSprite in newSprites)
171+
{
172+
spriteSheetSO.InsertArrayElementAtIndex(spriteSheetSO.arraySize);
173+
var element = spriteSheetSO.GetArrayElementAtIndex(spriteSheetSO.arraySize - 1);
174+
newSprite.Apply(element);
175+
}
176+
so.ApplyModifiedPropertiesWithoutUndo();
177+
}
178+
179+
public void InitSpriteEditorDataProvider()
180+
{
181+
var so = new SerializedObject(m_AssetImporter);
182+
var spriteSheetSO = so.FindProperty("m_SpriteSheet.m_Sprites");
183+
m_SpritesMultiple = new List<SpriteDataExt>();
184+
m_SpriteSingle = new SpriteDataExt();
185+
m_SpriteSingle.Load(so);
186+
187+
for (int i = 0; i < spriteSheetSO.arraySize; ++i)
188+
{
189+
var data = new SpriteDataExt();
189190
var sp = spriteSheetSO.GetArrayElementAtIndex(i);
190-
m_SpritesMultiple[i].Apply(sp);
191+
data.Load(sp);
192+
m_SpritesMultiple.Add(data);
191193
}
192-
while (m_SpritesMultiple.Count < spriteSheetSO.arraySize)
194+
}
195+
196+
public T GetDataProvider<T>() where T : class
197+
{
198+
if (typeof(T) == typeof(ISpriteBoneDataProvider))
199+
{
200+
return new SpriteBoneDataTransfer(this) as T;
201+
}
202+
if (typeof(T) == typeof(ISpriteMeshDataProvider))
203+
{
204+
return new SpriteMeshDataTransfer(this) as T;
205+
}
206+
if (typeof(T) == typeof(ISpriteOutlineDataProvider))
193207
{
194-
spriteSheetSO.DeleteArrayElementAtIndex(m_SpritesMultiple.Count);
208+
return new SpriteOutlineDataTransfer(this) as T;
195209
}
210+
if (typeof(T) == typeof(ISpritePhysicsOutlineDataProvider))
211+
{
212+
return new SpritePhysicsOutlineDataTransfer(this) as T;
213+
}
214+
if (typeof(T) == typeof(ITextureDataProvider))
215+
{
216+
return new SpriteTextureDataTransfer(this) as T;
217+
}
218+
else
219+
return this as T;
196220
}
197221

198-
public void GetTextureActualWidthAndHeight(out int width, out int height)
222+
public bool HasDataProvider(Type type)
199223
{
200-
width = height = 0;
201-
((UnityTextureImporter)m_AssetImporter).GetWidthAndHeight(ref width, ref height);
224+
if (type == typeof(ISpriteBoneDataProvider) ||
225+
type == typeof(ISpriteMeshDataProvider) ||
226+
type == typeof(ISpriteOutlineDataProvider) ||
227+
type == typeof(ISpritePhysicsOutlineDataProvider) ||
228+
type == typeof(ITextureDataProvider))
229+
{
230+
return true;
231+
}
232+
else
233+
return type.IsAssignableFrom(GetType());
202234
}
203235
}
204236
}

0 commit comments

Comments
 (0)