Browse Source

Added GameModule

James Peret 2 years ago
parent
commit
5cad0f7fd3
3 changed files with 80 additions and 0 deletions
  1. 68 0
      Runtime/AnalyticsModule.cs
  2. 11 0
      Runtime/AnalyticsModule.cs.meta
  3. 1 0
      Runtime/KairoEngine.Analytics.asmdef

+ 68 - 0
Runtime/AnalyticsModule.cs

@@ -0,0 +1,68 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+using KairoEngine.Core;
+using KairoEngine.Core.ModuleSystem;
+using Sirenix.OdinInspector;
+using mixpanel;
+
+namespace KairoEngine.Analytics
+{
+    [Serializable, HideReferenceObjectPicker]
+    public class AnalyticsModule : GameModuleBase
+    {
+        public override string name => "Analytics Module";
+
+        [FoldoutGroup("@name")] public string mixpanelAPIToken = "";
+        [FoldoutGroup("@name")] public bool trackEvents = true;
+        [FoldoutGroup("@name")] public bool debugEvents = true;
+        [FoldoutGroup("@name")] public bool clearEventsOnStart = false;
+
+        public AnalyticsModule(GameConfig config) : base(config)
+        {
+            this.gameConfig = config;
+            this.className = this.GetType().AssemblyQualifiedName;
+            this.typeName = "AnalyticsModule";
+        }
+
+        public override void Load(Transform parent)
+        {
+            if(mixpanelAPIToken == "") Debug.LogWarning("Missing Mixpanel API Token. Please configure Analytics Module in GameConfig.");
+            else Mixpanel.SetToken(mixpanelAPIToken);
+            GameObject obj = GameObject.Instantiate(new GameObject(), parent);
+            obj.name = "Analytics";
+            AnalyticsComponent analytics = obj.AddComponent<AnalyticsComponent>();
+            analytics.trackEvents = trackEvents;
+            analytics.debugEvents = debugEvents;
+            analytics.clearEventsOnStart = clearEventsOnStart;
+        }
+
+        public override void Reset()
+        {
+            mixpanelAPIToken = "";
+            trackEvents = true;
+            debugEvents = true;
+            clearEventsOnStart = false;
+        }
+
+        public override void Destroy() { }
+
+        public static AnalyticsModule JSONToAnalyticsModule(string data)
+        {
+            try
+            {
+                return JsonUtility.FromJson<AnalyticsModule>(data);
+            }
+            catch (System.Exception e)
+            {
+                Debug.LogError($"Could not deserialize AnalyticsModule: \n{e}");
+                return new AnalyticsModule(null);
+            }
+        }
+
+        public override void OnBeforeSerialize(ObjectSerializer serializer) { }
+        public override void OnBeforeDeserialize(ObjectSerializer serializer) { }
+    }
+}
+

+ 11 - 0
Runtime/AnalyticsModule.cs.meta

@@ -0,0 +1,11 @@
+fileFormatVersion: 2
+guid: 60de74cabfabf95428d4008f58ce50fa
+MonoImporter:
+  externalObjects: {}
+  serializedVersion: 2
+  defaultReferences: []
+  executionOrder: 0
+  icon: {instanceID: 0}
+  userData: 
+  assetBundleName: 
+  assetBundleVariant: 

+ 1 - 0
Runtime/KairoEngine.Analytics.asmdef

@@ -2,6 +2,7 @@
     "name": "KairoEngine.Analytics",
     "rootNamespace": "",
     "references": [
+        "GUID:7e5ae6a38d1532248b4c890eca668b06",
         "GUID:21462402cefc5dd4ba284fb769521eff"
     ],
     "includePlatforms": [],