mirror of
https://gitgud.io/AbstractConcept/rimworld-animation-studio.git
synced 2024-08-15 00:43:27 +00:00
Initial commit
This commit is contained in:
commit
3c7cc0c973
8391 changed files with 704313 additions and 0 deletions
|
@ -0,0 +1,168 @@
|
|||
using System;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine.Analytics;
|
||||
using UnityEngine;
|
||||
using UnityEngine.U2D;
|
||||
using UnityEngine.Events;
|
||||
|
||||
namespace UnityEditor.U2D
|
||||
{
|
||||
|
||||
internal class SpriteShapeAnalyticsEvents
|
||||
{
|
||||
public class SpriteShapeEvent : UnityEvent<UnityEngine.U2D.SpriteShape> { }
|
||||
public class SpriteShapeRendererEvent : UnityEvent<SpriteShapeRenderer> { }
|
||||
|
||||
private SpriteShapeEvent m_SpriteShape = new SpriteShapeEvent();
|
||||
private SpriteShapeRendererEvent m_SpriteShapeRenderer = new SpriteShapeRendererEvent();
|
||||
|
||||
public virtual SpriteShapeEvent spriteShapeEvent { get { return m_SpriteShape; } }
|
||||
public virtual SpriteShapeRendererEvent spriteShapeRendererEvent { get { return m_SpriteShapeRenderer; } }
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
enum SpriteShapeAnalyticsEventType
|
||||
{
|
||||
SpriteShapeProfileCreated = 0,
|
||||
SpriteShapeRendererCreated = 1
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
struct SpriteShapeAnalyticsEvent
|
||||
{
|
||||
[SerializeField]
|
||||
public SpriteShapeAnalyticsEventType sub_type;
|
||||
[SerializeField]
|
||||
public string data;
|
||||
}
|
||||
|
||||
internal interface ISpriteShapeAnalyticsStorage
|
||||
{
|
||||
AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt);
|
||||
void Dispose();
|
||||
}
|
||||
|
||||
internal static class SpriteShapeAnalyticConstant
|
||||
{
|
||||
public const int k_MaxEventsPerHour = 1000;
|
||||
public const int k_MaxNumberOfElements = 1000;
|
||||
}
|
||||
|
||||
[Serializable]
|
||||
internal class SpriteShapeAnalytics
|
||||
{
|
||||
const int k_SpriteShapeEventElementCount = 2;
|
||||
ISpriteShapeAnalyticsStorage m_AnalyticsStorage;
|
||||
[SerializeField]
|
||||
SpriteShapeAnalyticsEvents m_EventBus = null;
|
||||
|
||||
internal SpriteShapeAnalyticsEvents eventBus
|
||||
{
|
||||
get
|
||||
{
|
||||
if (m_EventBus == null)
|
||||
m_EventBus = new SpriteShapeAnalyticsEvents();
|
||||
return m_EventBus;
|
||||
}
|
||||
}
|
||||
|
||||
public SpriteShapeAnalytics(ISpriteShapeAnalyticsStorage analyticsStorage)
|
||||
{
|
||||
m_AnalyticsStorage = analyticsStorage;
|
||||
eventBus.spriteShapeEvent.AddListener(OnSpriteShapeCreated);
|
||||
eventBus.spriteShapeRendererEvent.AddListener(OnSpriteShapeRendererCreated);
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
eventBus.spriteShapeEvent.RemoveListener(OnSpriteShapeCreated);
|
||||
eventBus.spriteShapeRendererEvent.RemoveListener(OnSpriteShapeRendererCreated);
|
||||
m_AnalyticsStorage.Dispose();
|
||||
}
|
||||
|
||||
void OnSpriteShapeCreated(UnityEngine.U2D.SpriteShape shape)
|
||||
{
|
||||
SendUsageEvent(new SpriteShapeAnalyticsEvent()
|
||||
{
|
||||
sub_type = SpriteShapeAnalyticsEventType.SpriteShapeProfileCreated,
|
||||
data = ""
|
||||
});
|
||||
}
|
||||
|
||||
void OnSpriteShapeRendererCreated(SpriteShapeRenderer renderer)
|
||||
{
|
||||
SendUsageEvent(new SpriteShapeAnalyticsEvent()
|
||||
{
|
||||
sub_type = SpriteShapeAnalyticsEventType.SpriteShapeRendererCreated,
|
||||
data = ""
|
||||
});
|
||||
}
|
||||
|
||||
public void SendUsageEvent(SpriteShapeAnalyticsEvent evt)
|
||||
{
|
||||
m_AnalyticsStorage.SendUsageEvent(evt);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// For testing.
|
||||
internal class SpriteShapeJsonAnalyticsStorage : ISpriteShapeAnalyticsStorage
|
||||
{
|
||||
[Serializable]
|
||||
struct SpriteShapeToolEvents
|
||||
{
|
||||
[SerializeField]
|
||||
public List<SpriteShapeAnalyticsEvent> events;
|
||||
}
|
||||
|
||||
SpriteShapeToolEvents m_TotalEvents = new SpriteShapeToolEvents()
|
||||
{
|
||||
events = new List<SpriteShapeAnalyticsEvent>()
|
||||
};
|
||||
|
||||
public AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt)
|
||||
{
|
||||
m_TotalEvents.events.Add(evt);
|
||||
return AnalyticsResult.Ok;
|
||||
}
|
||||
|
||||
public void Dispose()
|
||||
{
|
||||
try
|
||||
{
|
||||
string file = string.Format("analytics_{0}.json", System.DateTime.Now.ToString("yyyy-dd-M--HH-mm-ss"));
|
||||
if (System.IO.File.Exists(file))
|
||||
System.IO.File.Delete(file);
|
||||
System.IO.File.WriteAllText(file, JsonUtility.ToJson(m_TotalEvents, true));
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.Log(ex);
|
||||
}
|
||||
finally
|
||||
{
|
||||
m_TotalEvents.events.Clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[InitializeOnLoad]
|
||||
internal class SpriteShapeUnityAnalyticsStorage : ISpriteShapeAnalyticsStorage
|
||||
{
|
||||
const string k_VendorKey = "unity.2d.spriteshape";
|
||||
const int k_Version = 1;
|
||||
|
||||
public SpriteShapeUnityAnalyticsStorage()
|
||||
{
|
||||
EditorAnalytics.RegisterEventWithLimit("u2dSpriteShapeToolUsage", SpriteShapeAnalyticConstant.k_MaxEventsPerHour, SpriteShapeAnalyticConstant.k_MaxNumberOfElements, k_VendorKey, k_Version);
|
||||
}
|
||||
|
||||
public AnalyticsResult SendUsageEvent(SpriteShapeAnalyticsEvent evt)
|
||||
{
|
||||
return EditorAnalytics.SendEventWithLimit("u2dSpriteShapeToolUsage", evt, k_Version);
|
||||
}
|
||||
|
||||
public void Dispose() { }
|
||||
}
|
||||
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue