-
Notifications
You must be signed in to change notification settings - Fork 12
/
Atlas.cs
92 lines (79 loc) · 1.83 KB
/
Atlas.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
using System;
using UnityEngine;
using System.Collections.Generic;
public class Atlas
{
private List<SpriteData> spriteList = new List<SpriteData>();
private Dictionary<string, SpriteData> spriteDictionary;
public Texture Texture
{
get { return SpriteMaterial != null ? SpriteMaterial.mainTexture : null; }
}
public Material SpriteMaterial { get; set; }
public List<SpriteData> SpriteList
{
get { return spriteList; }
set { spriteList = value; }
}
public SpriteData GetSprite(string name)
{
if (string.IsNullOrEmpty(name)) { return null; }
if (spriteDictionary == null)
{
spriteDictionary = new Dictionary<string, SpriteData>();
foreach (var spriteData in spriteList)
{
spriteDictionary.Add(spriteData.Name, spriteData);
}
}
SpriteData foundSprite;
spriteDictionary.TryGetValue(name, out foundSprite);
return foundSprite;
}
public void ClearAllSpriteData()
{
if (spriteDictionary != null)
{
spriteDictionary.Clear();
spriteDictionary = null;
}
if (SpriteList != null)
{
SpriteList.Clear();
}
}
public void RenameSprite(string oldName, string newName)
{
SpriteData spriteData;
if (spriteDictionary.TryGetValue(oldName, out spriteData))
{
spriteDictionary.Remove(oldName);
spriteData.SetName(newName);
spriteDictionary.Add(newName, spriteData);
}
}
public void AddSprite(DynamicSpriteData spriteData)
{
if (spriteData == null || spriteDictionary.ContainsKey(spriteData.Name))
{
return;
}
spriteDictionary.Add(spriteData.Name, spriteData);
SpriteList.Add(spriteData);
}
public void RemoveAllSpriteData(Predicate<SpriteData> match)
{
if (match == null)
{
return;
}
for (int i = 0; i < SpriteList.Count; i++)
{
if (match(SpriteList[i]))
{
spriteDictionary.Remove(SpriteList[i].Name);
}
}
SpriteList.RemoveAll(match);
}
}