Skip to content

Commit 939f076

Browse files
committed
Refactoring
1 parent 83a0c31 commit 939f076

File tree

9 files changed

+143
-144
lines changed

9 files changed

+143
-144
lines changed

Assets/SpriteSheetRuntimeGenerator/Demos/Scripts/AssetPackerExample.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
using System.Collections;
1+
using DaVikingCode.AssetPacker;
2+
using System.Collections;
23
using System.Collections.Generic;
34
using System.IO;
45
using UnityEngine;

Assets/SpriteSheetRuntimeGenerator/Scripts/AssetPacker/Asset.meta

Lines changed: 0 additions & 9 deletions
This file was deleted.

Assets/SpriteSheetRuntimeGenerator/Scripts/AssetPacker/Asset/ItemToRaster.cs

Lines changed: 0 additions & 11 deletions
This file was deleted.

Assets/SpriteSheetRuntimeGenerator/Scripts/AssetPacker/Asset/TextureAsset.cs

Lines changed: 0 additions & 22 deletions
This file was deleted.

Assets/SpriteSheetRuntimeGenerator/Scripts/AssetPacker/AssetPacker.cs

Lines changed: 102 additions & 101 deletions
Original file line numberDiff line numberDiff line change
@@ -6,166 +6,167 @@
66
using UnityEngine;
77
using UnityEngine.Events;
88

9-
public class AssetPacker : MonoBehaviour {
9+
namespace DaVikingCode.AssetPacker {
1010

11-
public UnityEvent OnProcessCompleted;
11+
public class AssetPacker : MonoBehaviour {
1212

13-
protected Dictionary<string, Sprite> mSprites = new Dictionary<string, Sprite>();
14-
protected List<ItemToRaster> itemsToRaster = new List<ItemToRaster>();
13+
public UnityEvent OnProcessCompleted;
14+
public float pixelsPerUnit = 100.0f;
1515

16-
protected RectanglePacker mPacker;
17-
protected Texture2D mTexture;
16+
protected Dictionary<string, Sprite> mSprites = new Dictionary<string, Sprite>();
17+
protected List<ItemToRaster> itemsToRaster = new List<ItemToRaster>();
1818

19-
protected bool allow4096Textures = false;
19+
protected bool allow4096Textures = false;
2020

21-
public void AddItemToRaster(string file, string customID = null) {
21+
public void AddItemToRaster(string file, string customID = null) {
2222

23-
itemsToRaster.Add(new ItemToRaster(file, customID != null ? customID : Path.GetFileNameWithoutExtension(file)));
24-
}
23+
itemsToRaster.Add(new ItemToRaster(file, customID != null ? customID : Path.GetFileNameWithoutExtension(file)));
24+
}
2525

26-
public void AddItemsToRaster(string[] files) {
26+
public void AddItemsToRaster(string[] files) {
2727

28-
foreach (string file in files)
29-
AddItemToRaster(file);
30-
}
28+
foreach (string file in files)
29+
AddItemToRaster(file);
30+
}
3131

32-
public void Process(bool allow4096Textures = false) {
32+
public void Process(bool allow4096Textures = false) {
3333

34-
this.allow4096Textures = allow4096Textures;
34+
this.allow4096Textures = allow4096Textures;
3535

36-
StartCoroutine(process());
37-
}
36+
StartCoroutine(process());
37+
}
3838

39-
protected IEnumerator process() {
39+
protected IEnumerator process() {
4040

41-
List<Texture2D> textures = new List<Texture2D>();
42-
List<string> images = new List<string>();
41+
List<Texture2D> textures = new List<Texture2D>();
42+
List<string> images = new List<string>();
4343

44-
foreach (ItemToRaster itemToRaster in itemsToRaster) {
44+
foreach (ItemToRaster itemToRaster in itemsToRaster) {
4545

46-
WWW loader = new WWW("file:///" + itemToRaster.file);
46+
WWW loader = new WWW("file:///" + itemToRaster.file);
4747

48-
yield return loader;
48+
yield return loader;
4949

50-
textures.Add(loader.texture);
51-
images.Add(itemToRaster.id);
52-
}
50+
textures.Add(loader.texture);
51+
images.Add(itemToRaster.id);
52+
}
5353

54-
List<Rect> mRectangles = new List<Rect>();
55-
for (int i = 0; i < textures.Count; i++)
56-
mRectangles.Add(new Rect(0, 0, textures[i].width, textures[i].height));
54+
List<Rect> mRectangles = new List<Rect>();
55+
for (int i = 0; i < textures.Count; i++)
56+
mRectangles.Add(new Rect(0, 0, textures[i].width, textures[i].height));
5757

58-
const int padding = 1;
58+
const int padding = 1;
5959

60-
int textureSize = allow4096Textures ? 4096 : 2048;
60+
int textureSize = allow4096Textures ? 4096 : 2048;
6161

62-
int numSpriteSheet = 0;
63-
while (mRectangles.Count > 0) {
62+
int numSpriteSheet = 0;
63+
while (mRectangles.Count > 0) {
6464

65-
mTexture = new Texture2D(textureSize, textureSize, TextureFormat.ARGB32, false);
66-
Color32[] mFillColor = mTexture.GetPixels32();
67-
for (int i = 0; i < mFillColor.Length; ++i)
68-
mFillColor[i] = Color.clear;
65+
Texture2D mTexture = new Texture2D(textureSize, textureSize, TextureFormat.ARGB32, false);
66+
Color32[] mFillColor = mTexture.GetPixels32();
67+
for (int i = 0; i < mFillColor.Length; ++i)
68+
mFillColor[i] = Color.clear;
6969

70-
mPacker = new RectanglePacker(mTexture.width, mTexture.height, padding);
70+
RectanglePacker mPacker = new RectanglePacker(mTexture.width, mTexture.height, padding);
7171

72-
for (int i = 0; i < mRectangles.Count; i++)
73-
mPacker.insertRectangle((int) mRectangles[i].width, (int) mRectangles[i].height, i);
72+
for (int i = 0; i < mRectangles.Count; i++)
73+
mPacker.insertRectangle((int) mRectangles[i].width, (int) mRectangles[i].height, i);
7474

75-
mPacker.packRectangles();
75+
mPacker.packRectangles();
7676

77-
if (mPacker.rectangleCount > 0) {
77+
if (mPacker.rectangleCount > 0) {
7878

79-
mTexture.SetPixels32(mFillColor);
80-
IntegerRectangle rect = new IntegerRectangle();
81-
List<TextureAsset> textureAssets = new List<TextureAsset>();
79+
mTexture.SetPixels32(mFillColor);
80+
IntegerRectangle rect = new IntegerRectangle();
81+
List<TextureAsset> textureAssets = new List<TextureAsset>();
8282

83-
List<Rect> garbageRect = new List<Rect>();
84-
List<Texture2D> garabeTextures = new List<Texture2D>();
85-
List<string> garbageImages = new List<string>();
83+
List<Rect> garbageRect = new List<Rect>();
84+
List<Texture2D> garabeTextures = new List<Texture2D>();
85+
List<string> garbageImages = new List<string>();
8686

87-
for (int j = 0; j < mPacker.rectangleCount; j++) {
87+
for (int j = 0; j < mPacker.rectangleCount; j++) {
8888

89-
rect = mPacker.getRectangle(j, rect);
89+
rect = mPacker.getRectangle(j, rect);
9090

91-
int index = mPacker.getRectangleId(j);
91+
int index = mPacker.getRectangleId(j);
9292

93-
mTexture.SetPixels32(rect.x, rect.y, rect.width, rect.height, textures[index].GetPixels32());
93+
mTexture.SetPixels32(rect.x, rect.y, rect.width, rect.height, textures[index].GetPixels32());
9494

95-
TextureAsset texture = new TextureAsset();
96-
texture.x = rect.x;
97-
texture.y = rect.y;
98-
texture.width = rect.width;
99-
texture.height = rect.height;
100-
texture.name = images[index];
95+
TextureAsset texture = new TextureAsset();
96+
texture.x = rect.x;
97+
texture.y = rect.y;
98+
texture.width = rect.width;
99+
texture.height = rect.height;
100+
texture.name = images[index];
101101

102-
textureAssets.Add(texture);
102+
textureAssets.Add(texture);
103103

104-
garbageRect.Add(mRectangles[index]);
105-
garabeTextures.Add(textures[index]);
106-
garbageImages.Add(images[index]);
107-
}
104+
garbageRect.Add(mRectangles[index]);
105+
garabeTextures.Add(textures[index]);
106+
garbageImages.Add(images[index]);
107+
}
108+
109+
foreach (Rect garbage in garbageRect)
110+
mRectangles.Remove(garbage);
108111

109-
foreach (Rect garbage in garbageRect)
110-
mRectangles.Remove(garbage);
112+
foreach (Texture2D garbage in garabeTextures)
113+
textures.Remove(garbage);
111114

112-
foreach (Texture2D garbage in garabeTextures)
113-
textures.Remove(garbage);
115+
foreach (string garbage in garbageImages)
116+
images.Remove(garbage);
114117

115-
foreach (string garbage in garbageImages)
116-
images.Remove(garbage);
118+
mTexture.Apply();
117119

118-
mTexture.Apply();
120+
Directory.CreateDirectory(Application.persistentDataPath + "/Test/");
119121

120-
Directory.CreateDirectory(Application.persistentDataPath + "/Test/");
122+
File.WriteAllBytes(Application.persistentDataPath + "/Test/data" + numSpriteSheet + ".png", mTexture.EncodeToPNG());
123+
File.WriteAllText(Application.persistentDataPath + "/Test/data" + numSpriteSheet + ".json", JsonUtility.ToJson(new TextureAssets(textureAssets.ToArray())));
124+
++numSpriteSheet;
121125

122-
File.WriteAllBytes(Application.persistentDataPath + "/Test/data" + numSpriteSheet + ".png", mTexture.EncodeToPNG());
123-
File.WriteAllText(Application.persistentDataPath + "/Test/data" + numSpriteSheet + ".json", JsonUtility.ToJson(new TextureAssets(textureAssets.ToArray())));
124-
++numSpriteSheet;
126+
/*WWW loaderTexture = new WWW("file:///" + Application.persistentDataPath + "/Test/data.png");
127+
yield return loaderTexture;
125128
126-
/*WWW loaderTexture = new WWW("file:///" + Application.persistentDataPath + "/Test/data.png");
127-
yield return loaderTexture;
129+
WWW loaderJSON = new WWW("file:///" + Application.persistentDataPath + "/Test/data.json");
130+
yield return loaderJSON;
128131
129-
WWW loaderJSON = new WWW("file:///" + Application.persistentDataPath + "/Test/data.json");
130-
yield return loaderJSON;
132+
TextureAssets textureAssets = JsonUtility.FromJson<TextureAssets>(loaderJSON.text);*/
131133

132-
TextureAssets textureAssets = JsonUtility.FromJson<TextureAssets>(loaderJSON.text);*/
134+
foreach (TextureAsset textureAsset in textureAssets)
135+
mSprites.Add(textureAsset.name, Sprite.Create(mTexture, new Rect(textureAsset.x, textureAsset.y, textureAsset.width, textureAsset.height), Vector2.zero, pixelsPerUnit, 0, SpriteMeshType.FullRect));
136+
}
133137

134-
foreach (TextureAsset textureAsset in textureAssets)
135-
mSprites.Add(textureAsset.name, Sprite.Create(mTexture, new Rect(textureAsset.x, textureAsset.y, textureAsset.width, textureAsset.height), Vector2.zero, 100, 0, SpriteMeshType.FullRect));
136138
}
137139

140+
OnProcessCompleted.Invoke();
138141
}
139142

140-
OnProcessCompleted.Invoke();
141-
}
143+
public Sprite GetSprite(string id) {
142144

143-
public Sprite GetSprite(string id) {
145+
Sprite sprite = null;
144146

145-
Sprite sprite = null;
147+
mSprites.TryGetValue (id, out sprite);
146148

147-
mSprites.TryGetValue (id, out sprite);
149+
return sprite;
150+
}
148151

149-
return sprite;
150-
}
152+
public Sprite[] GetSprites(string prefix) {
151153

152-
public Sprite[] GetSprites(string prefix) {
154+
List<string> spriteNames = new List<string>();
155+
foreach (var asset in mSprites)
156+
spriteNames.Add(asset.Key);
153157

154-
List<string> spriteNames = new List<string>();
155-
foreach (var asset in mSprites)
156-
spriteNames.Add(asset.Key);
158+
spriteNames.Sort(StringComparer.Ordinal);
157159

158-
spriteNames.Sort(StringComparer.Ordinal);
160+
List<Sprite> sprites = new List<Sprite>();
161+
Sprite sprite;
162+
for (int i = 0; i < spriteNames.Count; ++i) {
159163

160-
List<Sprite> sprites = new List<Sprite>();
161-
Sprite sprite;
162-
for (int i = 0; i < spriteNames.Count; ++i) {
164+
mSprites.TryGetValue(spriteNames[i], out sprite);
163165

164-
mSprites.TryGetValue(spriteNames[i], out sprite);
166+
sprites.Add(sprite);
167+
}
165168

166-
sprites.Add(sprite);
169+
return sprites.ToArray();
167170
}
168-
169-
return sprites.ToArray();
170171
}
171172
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
namespace DaVikingCode.AssetPacker {
2+
3+
public class ItemToRaster {
4+
5+
public string file;
6+
public string id;
7+
8+
public ItemToRaster(string file, string id) {
9+
10+
this.file = file;
11+
this.id = id;
12+
}
13+
}
14+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
3+
namespace DaVikingCode.AssetPacker {
4+
5+
[Serializable]
6+
public class TextureAssets {
7+
8+
public TextureAsset[] assets;
9+
10+
public TextureAssets (TextureAsset[] assets) {
11+
12+
this.assets = assets;
13+
}
14+
}
15+
16+
[Serializable]
17+
public class TextureAsset {
18+
19+
public int x;
20+
public int y;
21+
public int width;
22+
public int height;
23+
public string name;
24+
}
25+
}

0 commit comments

Comments
 (0)