AnalyticsModule.cs 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. using System;
  2. using System.Collections;
  3. using System.Collections.Generic;
  4. using UnityEngine;
  5. using KairoEngine.Core;
  6. using KairoEngine.Core.ModuleSystem;
  7. using Sirenix.OdinInspector;
  8. using mixpanel;
  9. namespace KairoEngine.Analytics
  10. {
  11. [Serializable, HideReferenceObjectPicker]
  12. public class AnalyticsModule : GameModuleBase
  13. {
  14. public override string name => "Analytics Module";
  15. public string mixpanelAPIToken = "";
  16. public bool trackEvents = true;
  17. public bool debugEvents = true;
  18. public bool clearEventsOnStart = false;
  19. public AnalyticsModule(GameConfig config) : base(config)
  20. {
  21. this.gameConfig = config;
  22. this.className = this.GetType().AssemblyQualifiedName;
  23. this.typeName = "AnalyticsModule";
  24. }
  25. public override void Load(Transform parent)
  26. {
  27. if(mixpanelAPIToken == "") Debug.LogWarning("Missing Mixpanel API Token. Please configure Analytics Module in GameConfig.");
  28. else Mixpanel.SetToken(mixpanelAPIToken);
  29. GameObject obj = GameObject.Instantiate(new GameObject(), parent);
  30. obj.name = "Analytics";
  31. AnalyticsComponent analytics = obj.AddComponent<AnalyticsComponent>();
  32. analytics.trackEvents = trackEvents;
  33. analytics.debugEvents = debugEvents;
  34. analytics.clearEventsOnStart = clearEventsOnStart;
  35. }
  36. public override void Reset()
  37. {
  38. mixpanelAPIToken = "";
  39. trackEvents = true;
  40. debugEvents = true;
  41. clearEventsOnStart = false;
  42. }
  43. public override void Destroy() { }
  44. public static AnalyticsModule JSONToAnalyticsModule(string data)
  45. {
  46. try
  47. {
  48. return JsonUtility.FromJson<AnalyticsModule>(data);
  49. }
  50. catch (System.Exception e)
  51. {
  52. Debug.LogError($"Could not deserialize AnalyticsModule: \n{e}");
  53. return new AnalyticsModule(null);
  54. }
  55. }
  56. public override void OnBeforeSerialize(ObjectSerializer serializer) { }
  57. public override void OnBeforeDeserialize(ObjectSerializer serializer) { }
  58. }
  59. }