diff --git a/Assets/Plugins/LiveWatchLite.meta b/Assets/Plugins/LiveWatchLite.meta
new file mode 100644
index 0000000..bcd39e2
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite.meta
@@ -0,0 +1,8 @@
+fileFormatVersion: 2
+guid: 5f6004ff999ec5d469b9d3cf7714403d
+folderAsset: yes
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
diff --git a/Assets/Plugins/LiveWatchLite/Documentation.pdf b/Assets/Plugins/LiveWatchLite/Documentation.pdf
new file mode 100644
index 0000000..e8c6254
Binary files /dev/null and b/Assets/Plugins/LiveWatchLite/Documentation.pdf differ
diff --git a/Assets/Plugins/LiveWatchLite/Documentation.pdf.meta b/Assets/Plugins/LiveWatchLite/Documentation.pdf.meta
new file mode 100644
index 0000000..c1fa3c3
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Documentation.pdf.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 401fc6a1ec791054e8f76e5327c7bc9f
+DefaultImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/Documentation.pdf
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef b/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef
new file mode 100644
index 0000000..8874d07
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef
@@ -0,0 +1,3 @@
+{
+ "name": "LiveWatch"
+}
diff --git a/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef.meta b/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef.meta
new file mode 100644
index 0000000..a2d1936
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/LiveWatch.asmdef.meta
@@ -0,0 +1,14 @@
+fileFormatVersion: 2
+guid: 8bae3fcddb249414ead59707780b36ca
+AssemblyDefinitionImporter:
+ externalObjects: {}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/LiveWatch.asmdef
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/Scripts.meta b/Assets/Plugins/LiveWatchLite/Scripts.meta
new file mode 100644
index 0000000..b371834
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: a16f4bd3c99543b68052eb653e868184
+timeCreated: 1644152626
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API.meta b/Assets/Plugins/LiveWatchLite/Scripts/API.meta
new file mode 100644
index 0000000..1fdc3c8
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 1949d46200f34bbf852e2474fd7b86ca
+timeCreated: 1653138250
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs
new file mode 100644
index 0000000..c5dba1a
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs
@@ -0,0 +1,30 @@
+using System;
+using System.Collections.Generic;
+using System.Reflection;
+using UnityEngine;
+
+namespace Ingvar.LiveWatch
+{
+ public static partial class Watch
+ {
+ public static char PathSeparator { get; set; } = '/';
+
+ internal static int MaxRecursionDepth = 100;
+
+ public static bool IsLive
+ {
+ get => WatchStorageSO.instance.IsLive;
+ set => WatchStorageSO.instance.IsLive = value;
+ }
+
+ internal static WatchStorage Watches
+ {
+ get => WatchStorageSO.instance.Watches;
+ set
+ {
+ DestroyAll();
+ WatchStorageSO.instance.Watches = value;
+ }
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs.meta b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs.meta
new file mode 100644
index 0000000..0f290d4
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 0ced31b9fdad40c1bc42f90d63659828
+timeCreated: 1643051681
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/Scripts/API/Watch.cs
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs
new file mode 100644
index 0000000..1e54749
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs
@@ -0,0 +1,102 @@
+using System;
+using System.Collections;
+using System.Collections.Generic;
+using UnityEngine;
+
+namespace Ingvar.LiveWatch
+{
+ ///
+ /// Type for generic Watch methods when you don't know what type it is, or don't want use type based functionality
+ ///
+ public class Any
+ {
+
+ }
+
+ public partial struct WatchReference
+ {
+ internal WatchVariable WatchVariable { get; }
+
+ public int ChildCount
+ {
+ get
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ return WatchVariable.Childs.Count;
+#else
+ return 0;
+#endif
+ }
+ }
+
+ internal WatchReference(WatchVariable watchVariable)
+ {
+ WatchVariable = watchVariable;
+ }
+
+ public WatchReference SetAlwaysCollapsable()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchVariable.RuntimeMeta.AlwaysShrinkable = true;
+#endif
+ return this;
+ }
+
+ public WatchReference SetDecimalPlaces(int value)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchVariable.RuntimeMeta.DecimalPlaces = value;
+#endif
+ return this;
+ }
+
+ public WatchReference SetSortOrder(int value)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ if (!WatchVariable.RuntimeMeta.IsOrderSet)
+ {
+ WatchVariable.RuntimeMeta.SortOrder = value;
+ WatchVariable.RuntimeMeta.IsOrderSet = true;
+ WatchVariable.RuntimeMeta.IsSortingRequired = true;
+ }
+#endif
+ return this;
+ }
+
+
+ public WatchReference UpdateOnce()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchVariable.RuntimeMeta.UpdateOnce = true;
+#endif
+ return this;
+ }
+
+ public WatchReference PushEmptyValue(bool withRoot = true, int maxRecursionDepth = 10)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ if (Watch.IsLive)
+ WatchServices.ReferenceCreator.PushEmpty(this, withRoot, maxRecursionDepth);
+#endif
+ return this;
+ }
+
+ public IEnumerable GetChildNames()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ return WatchVariable.Childs.SortedNames;
+#else
+ return Array.Empty();
+#endif
+ }
+
+ public WatchReference GetOrAdd(string path)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ return WatchServices.ReferenceCreator.GetOrAdd(this, path);
+#else
+ return WatchServices.ReferenceCreator.Empty();
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs.meta b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs.meta
new file mode 100644
index 0000000..9339885
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: bde558d1e19241fd9894b6507614c742
+timeCreated: 1643051866
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/Scripts/API/WatchReference.cs
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs
new file mode 100644
index 0000000..0b22a30
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs
@@ -0,0 +1,72 @@
+using System;
+
+namespace Ingvar.LiveWatch
+{
+ public partial struct WatchReference
+ {
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+
+ public WatchReference GetOrAdd(string path, Func valueGetter)
+ {
+ return Watch.GetOrAdd(this, path, valueGetter);
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs.meta b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs.meta
new file mode 100644
index 0000000..5411a66
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: 88d3577466c148bd8198f7e01c7835a1
+timeCreated: 1748342793
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/Scripts/API/WatchReference_BasicTypes.cs
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs
new file mode 100644
index 0000000..8523e7c
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs
@@ -0,0 +1,55 @@
+using System;
+using System.Diagnostics;
+
+namespace Ingvar.LiveWatch
+{
+ public static partial class Watch
+ {
+ public static event Action OnClearedAll;
+ public static event Action OnDestroyedAll;
+
+ public static WatchReference GetOrAdd(string path)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ return WatchServices.ReferenceCreator.GetOrAdd(path);
+#else
+ return WatchServices.ReferenceCreator.Empty();
+#endif
+ }
+
+ public static WatchReference PushEmpty(string path)
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ return WatchServices.ReferenceCreator.GetOrAdd(path).PushEmptyValue();
+#else
+ return WatchServices.ReferenceCreator.Empty();
+#endif
+ }
+
+ public static void UpdateAll()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchServices.VariableUpdater.UpdateAll();
+#endif
+ }
+
+ public static void ClearAll()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchServices.VariableUpdater.ClearAll();
+
+ OnClearedAll?.Invoke();
+#endif
+ }
+
+ public static void DestroyAll()
+ {
+#if UNITY_EDITOR || LIVE_WATCH_BUILD
+ WatchServices.VariableUpdater.ClearAll();
+ Watches.Clear();
+
+ OnDestroyedAll?.Invoke();
+#endif
+ }
+ }
+}
\ No newline at end of file
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs.meta b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs.meta
new file mode 100644
index 0000000..f86afb1
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_API.cs.meta
@@ -0,0 +1,10 @@
+fileFormatVersion: 2
+guid: d8dd881e863b44138a5167c7d7feb882
+timeCreated: 1652649243
+AssetOrigin:
+ serializedVersion: 1
+ productId: 324001
+ packageName: LiveWatch Lite | Debug with full history of changes
+ packageVersion: 1.0.1
+ assetPath: Assets/LiveWatchLite/Scripts/API/Watch_API.cs
+ uploadId: 770587
diff --git a/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_BaseTypes.cs b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_BaseTypes.cs
new file mode 100644
index 0000000..3d835d5
--- /dev/null
+++ b/Assets/Plugins/LiveWatchLite/Scripts/API/Watch_BaseTypes.cs
@@ -0,0 +1,841 @@
+#pragma warning disable CS0162
+using System;
+using System.Linq;
+using System.Collections.Generic;
+using Ingvar.LiveWatch;
+using Object = UnityEngine.Object;
+
+namespace Ingvar.LiveWatch
+{
+ // It's completely generated class, avoid modifying!
+ public static partial class Watch
+ {
+ private static string _tempStr;
+ private static HashSet _tempStrSet = new();
+ private static Dictionary