testss
This commit is contained in:
@@ -0,0 +1,84 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using UnityEngine.Analytics;
|
||||
using UnityEngine;
|
||||
|
||||
namespace UnityEditor.ShaderGraph
|
||||
{
|
||||
class ShaderGraphAnalytics
|
||||
{
|
||||
static bool s_EventRegistered = false;
|
||||
const int k_MaxEventsPerHour = 1000;
|
||||
const int k_MaxNumberOfElements = 1000;
|
||||
const string k_VendorKey = "unity.shadergraph";
|
||||
const string k_EventName = "uShaderGraphUsage";
|
||||
|
||||
static bool EnableAnalytics()
|
||||
{
|
||||
AnalyticsResult result = EditorAnalytics.RegisterEventWithLimit(k_EventName, k_MaxEventsPerHour, k_MaxNumberOfElements, k_VendorKey);
|
||||
if (result == AnalyticsResult.Ok)
|
||||
s_EventRegistered = true;
|
||||
|
||||
return s_EventRegistered;
|
||||
}
|
||||
|
||||
struct AnalyticsData
|
||||
{
|
||||
public string nodes;
|
||||
public int node_count;
|
||||
public string asset_guid;
|
||||
public int subgraph_count;
|
||||
}
|
||||
|
||||
public static void SendShaderGraphEvent(string assetGuid, GraphData graph)
|
||||
{
|
||||
//The event shouldn't be able to report if this is disabled but if we know we're not going to report
|
||||
//Lets early out and not waste time gathering all the data
|
||||
if (!EditorAnalytics.enabled)
|
||||
return;
|
||||
|
||||
if (!EnableAnalytics())
|
||||
return;
|
||||
|
||||
Dictionary<string, int> nodeTypeAndCount = new Dictionary<string, int>();
|
||||
var nodes = graph.GetNodes<AbstractMaterialNode>();
|
||||
|
||||
int subgraphCount = 0;
|
||||
foreach (var materialNode in nodes)
|
||||
{
|
||||
string nType = materialNode.GetType().ToString().Split('.').Last();
|
||||
|
||||
if (nType == "SubGraphNode")
|
||||
{
|
||||
subgraphCount += 1;
|
||||
}
|
||||
|
||||
if (!nodeTypeAndCount.ContainsKey(nType))
|
||||
{
|
||||
nodeTypeAndCount[nType] = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
nodeTypeAndCount[nType] += 1;
|
||||
}
|
||||
}
|
||||
var jsonRepr = DictionaryToJson(nodeTypeAndCount);
|
||||
|
||||
var data = new AnalyticsData()
|
||||
{
|
||||
nodes = jsonRepr,
|
||||
node_count = nodes.Count(),
|
||||
asset_guid = assetGuid,
|
||||
subgraph_count = subgraphCount
|
||||
};
|
||||
|
||||
EditorAnalytics.SendEventWithLimit(k_EventName, data);
|
||||
}
|
||||
|
||||
static string DictionaryToJson(Dictionary<string, int> dict)
|
||||
{
|
||||
var entries = dict.Select(d => $"\"{d.Key}\":{string.Join(",", d.Value)}");
|
||||
return "{" + string.Join(",", entries) + "}";
|
||||
}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user