70 lines
1.8 KiB
C#
70 lines
1.8 KiB
C#
|
using System.Collections.Generic;
|
|||
|
|
|||
|
using UnityEngine;
|
|||
|
|
|||
|
namespace Unity.PlasticSCM.Editor.UI.Avatar
|
|||
|
{
|
|||
|
internal static class AvatarImages
|
|||
|
{
|
|||
|
internal static void Dispose()
|
|||
|
{
|
|||
|
foreach (Texture2D image in mAvatars.Values)
|
|||
|
UnityEngine.Object.DestroyImmediate(image, true);
|
|||
|
|
|||
|
mAvatars.Clear();
|
|||
|
}
|
|||
|
|
|||
|
internal static bool HasGravatar(string email)
|
|||
|
{
|
|||
|
return mAvatars.ContainsKey(email);
|
|||
|
}
|
|||
|
|
|||
|
internal static void AddGravatar(string email, Texture2D image)
|
|||
|
{
|
|||
|
if (mAvatars.ContainsKey(email))
|
|||
|
return;
|
|||
|
|
|||
|
mAvatars.Add(email, image);
|
|||
|
}
|
|||
|
|
|||
|
internal static void UpdateGravatar(string email, byte[] rawImage)
|
|||
|
{
|
|||
|
if (!mAvatars.ContainsKey(email))
|
|||
|
return;
|
|||
|
|
|||
|
Texture2D result = GetTexture(rawImage);
|
|||
|
|
|||
|
mAvatars[email] = result;
|
|||
|
}
|
|||
|
|
|||
|
internal static Texture2D GetAvatar(string email)
|
|||
|
{
|
|||
|
Texture2D image = GetGravatarImage(email);
|
|||
|
|
|||
|
if (image != null)
|
|||
|
return image;
|
|||
|
|
|||
|
return Images.GetEmptyGravatar();
|
|||
|
}
|
|||
|
|
|||
|
static Texture2D GetGravatarImage(string email)
|
|||
|
{
|
|||
|
Texture2D avatar;
|
|||
|
mAvatars.TryGetValue(email, out avatar);
|
|||
|
return avatar;
|
|||
|
}
|
|||
|
|
|||
|
static Texture2D GetTexture(byte[] rawImage)
|
|||
|
{
|
|||
|
Texture2D result = Images.GetNewTextureFromBytes(32, 32, rawImage);
|
|||
|
Texture2D maskImage = ApplyCircleMask.For(result);
|
|||
|
|
|||
|
UnityEngine.Object.DestroyImmediate(result, true);
|
|||
|
|
|||
|
return maskImage;
|
|||
|
}
|
|||
|
|
|||
|
static readonly Dictionary<string, Texture2D> mAvatars =
|
|||
|
new Dictionary<string, Texture2D>();
|
|||
|
}
|
|||
|
}
|