ZibraEffectsPresetAnalytics.cs 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112
  1. #if UNITY_EDITOR
  2. using System;
  3. using UnityEditor;
  4. using UnityEngine;
  5. using UnityEngine.Networking;
  6. using com.zibra.common.Editor.SDFObjects;
  7. using com.zibra.common.Editor;
  8. namespace com.zibra.common.PresetAnalytics
  9. {
  10. [InitializeOnLoad]
  11. internal class ZibraEffectsPresetAnalytics : MonoBehaviour
  12. {
  13. public static void SendPresetAnalyticsData(string[] presetNames)
  14. {
  15. ZibraEffectsPresetAnalyticsStruct data = GetPresetAnalyticsData(presetNames);
  16. if (data.Preset_Names.Length == 0)
  17. return;
  18. string jsonData = JsonUtility.ToJson(data);
  19. ZibraEffectsPresetAnalyticsSender.SendAnalyticsData(jsonData);
  20. }
  21. private struct ZibraEffectsPresetAnalyticsStruct
  22. {
  23. public string LicenseKeys;
  24. public string HardwareId;
  25. public string PluginSKU;
  26. public bool Liquids_Available;
  27. public bool SmokeAndFire_Available;
  28. public string[] Preset_Names;
  29. }
  30. private static ZibraEffectsPresetAnalyticsStruct GetPresetAnalyticsData(string[] presetNames)
  31. {
  32. ZibraEffectsPresetAnalyticsStruct data = new ZibraEffectsPresetAnalyticsStruct();
  33. data.LicenseKeys = String.Join(",", ServerAuthManager.GetInstance().PluginLicenseKeys);
  34. data.HardwareId = PluginManager.GetHardwareID();
  35. #if ZIBRA_EFFECTS_OTP_VERSION
  36. data.PluginSKU = "OTP";
  37. #else
  38. data.PluginSKU = "Pro";
  39. #endif
  40. data.Liquids_Available = PluginManager.IsAvailable(PluginManager.Effect.Liquid);
  41. data.SmokeAndFire_Available = PluginManager.IsAvailable(PluginManager.Effect.Smoke);
  42. data.Preset_Names = FilterPresetNames(presetNames);
  43. return data;
  44. }
  45. private static string[] FilterPresetNames(string[] presetNames)
  46. {
  47. int countNonEmptyStrings = 0;
  48. foreach (string preset in presetNames)
  49. {
  50. if (preset != "")
  51. countNonEmptyStrings++;
  52. }
  53. string[] filteredPresetNames = new string[countNonEmptyStrings];
  54. int arrayIndex = 0;
  55. foreach (string preset in presetNames)
  56. {
  57. if (preset != "")
  58. {
  59. filteredPresetNames[arrayIndex] = preset;
  60. arrayIndex++;
  61. }
  62. }
  63. return filteredPresetNames;
  64. }
  65. }
  66. internal static class ZibraEffectsPresetAnalyticsSender
  67. {
  68. const string ANALYTIC_API_URL = "https://analytics.zibra.ai/api/assetsAnalytics";
  69. const int SUCCESS_CODE = 201;
  70. private static UnityWebRequestAsyncOperation request;
  71. public static void SendAnalyticsData(string jsonData)
  72. {
  73. if (request != null)
  74. {
  75. return;
  76. }
  77. #if UNITY_2022_2_OR_NEWER
  78. request = UnityWebRequest.PostWwwForm(ANALYTIC_API_URL, jsonData).SendWebRequest();
  79. #else
  80. request = UnityWebRequest.Post(ANALYTIC_API_URL, jsonData).SendWebRequest();
  81. #endif
  82. request.completed += UpdateRequest;
  83. }
  84. private static void UpdateRequest(AsyncOperation obj)
  85. {
  86. if (request == null || !request.isDone)
  87. {
  88. return;
  89. }
  90. request.webRequest.Dispose();
  91. request = null;
  92. }
  93. }
  94. }
  95. #endif