summaryrefslogtreecommitdiffstats
path: root/Third_Party/at.pimaker.ltcgi/Runtime
diff options
context:
space:
mode:
Diffstat (limited to 'Third_Party/at.pimaker.ltcgi/Runtime')
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_Assembly.asmdef23
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_AssemblyUdon.asset16
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.asset221
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.cs32
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.asset1970
-rw-r--r--Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.cs445
6 files changed, 2707 insertions, 0 deletions
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_Assembly.asmdef b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_Assembly.asmdef
new file mode 100644
index 0000000..91bce4f
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_Assembly.asmdef
@@ -0,0 +1,23 @@
+{
+ "name": "LTCGI_Assembly",
+ "references": [
+ "GUID:99835874ee819da44948776e0df4ff1d",
+ "GUID:f70a94b0bedfa8ec50ed757f72032810",
+ "GUID:a1653399f63795746b1857281d1e400d"
+ ],
+ "includePlatforms": [
+ "Android",
+ "Editor",
+ "LinuxStandalone64",
+ "WebGL",
+ "WindowsStandalone64"
+ ],
+ "excludePlatforms": [],
+ "allowUnsafeCode": false,
+ "overrideReferences": false,
+ "precompiledReferences": [],
+ "autoReferenced": true,
+ "defineConstraints": [],
+ "versionDefines": [],
+ "noEngineReferences": false
+} \ No newline at end of file
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_AssemblyUdon.asset b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_AssemblyUdon.asset
new file mode 100644
index 0000000..75d2304
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_AssemblyUdon.asset
@@ -0,0 +1,16 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: 5136146375e9a0a498a72a0091b40cc1, type: 3}
+ m_Name: LTCGI_AssemblyUdon
+ m_EditorClassIdentifier:
+ sourceAssembly: {fileID: 5897886265953266890, guid: f16c18940d95fd44a911829bf5e37070,
+ type: 3}
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.asset b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.asset
new file mode 100644
index 0000000..0999032
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.asset
@@ -0,0 +1,221 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
+ m_Name: LTCGI_ExampleToggle
+ m_EditorClassIdentifier:
+ serializedUdonProgramAsset: {fileID: 11400000, guid: 249e288d0fd67ea43b1daba53b5cadbc,
+ type: 2}
+ udonAssembly:
+ assemblyError:
+ sourceCsScript: {fileID: 11500000, guid: 861eec196aa5ee449a74f3e1d2b4aff7, type: 3}
+ scriptVersion: 2
+ compiledVersion: 2
+ behaviourSyncMode: 1
+ hasInteractEvent: 1
+ scriptID: 9036805435049282693
+ serializationData:
+ SerializedFormat: 2
+ SerializedBytes:
+ ReferencedUnityObjects: []
+ SerializedBytesString:
+ Prefab: {fileID: 0}
+ PrefabModificationsReferencedUnityObjects: []
+ PrefabModifications: []
+ SerializationNodes:
+ - Name: fieldDefinitions
+ Entry: 7
+ Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition,
+ UdonSharp.Editor]], mscorlib
+ - Name: comparer
+ Entry: 7
+ Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String,
+ mscorlib]], mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 12
+ Data: 3
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: LTCGI_Controller
+ - Name: $v
+ Entry: 7
+ Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: LTCGI_Controller
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 3|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: LTCGI_UdonAdapter, LTCGI_Assembly
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 7
+ Data: 4|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: VRC.Udon.UdonBehaviour, VRC.Udon
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 5|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 1
+ - Name:
+ Entry: 7
+ Data: 6|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: StartingState
+ - Name: $v
+ Entry: 7
+ Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: StartingState
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 8|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Boolean, mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 8
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 9|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: state
+ - Name: $v
+ Entry: 7
+ Data: 10|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: state
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 8
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 8
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.cs b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.cs
new file mode 100644
index 0000000..290f498
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_ExampleToggle.cs
@@ -0,0 +1,32 @@
+#if UDONSHARP
+using UdonSharp;
+using UnityEngine.Serialization;
+
+// NOTE: This script has to be in the "_LTCGI/Scripts" folder, *or* reference
+// the "LTCGI_AssemblyUdon" to allow it to use the "LTCGI_UdonAdapter" type!
+
+[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
+public class LTCGI_ExampleToggle : UdonSharpBehaviour
+{
+ // set this to your controller object (specifically the adapter object):
+ [FormerlySerializedAs("Adapter")]
+ public LTCGI_UdonAdapter LTCGI_Controller;
+
+ // set this however you want:
+ public bool StartingState = true;
+ private bool state;
+
+ void Start()
+ {
+ state = StartingState;
+ LTCGI_Controller._SetGlobalState(state);
+ }
+
+ // you can make this a UI event as well!
+ public override void Interact()
+ {
+ state = !state;
+ LTCGI_Controller._SetGlobalState(state);
+ }
+}
+#endif \ No newline at end of file
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.asset b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.asset
new file mode 100644
index 0000000..8a8d8ba
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.asset
@@ -0,0 +1,1970 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: c333ccfdd0cbdbc4ca30cef2dd6e6b9b, type: 3}
+ m_Name: LTCGI_UdonAdapter
+ m_EditorClassIdentifier:
+ serializedUdonProgramAsset: {fileID: 11400000, guid: 5bd39a6c4bb253e4087c7b2b92d17eb3,
+ type: 2}
+ udonAssembly:
+ assemblyError:
+ sourceCsScript: {fileID: 11500000, guid: 0007c466735eb8848af37d146d777ba4, type: 3}
+ scriptVersion: 2
+ compiledVersion: 2
+ behaviourSyncMode: 1
+ hasInteractEvent: 0
+ scriptID: 6231842042114027118
+ serializationData:
+ SerializedFormat: 2
+ SerializedBytes:
+ ReferencedUnityObjects: []
+ SerializedBytesString:
+ Prefab: {fileID: 0}
+ PrefabModificationsReferencedUnityObjects: []
+ PrefabModifications: []
+ SerializationNodes:
+ - Name: fieldDefinitions
+ Entry: 7
+ Data: 0|System.Collections.Generic.Dictionary`2[[System.String, mscorlib],[UdonSharp.Compiler.FieldDefinition,
+ UdonSharp.Editor]], mscorlib
+ - Name: comparer
+ Entry: 7
+ Data: 1|System.Collections.Generic.GenericEqualityComparer`1[[System.String,
+ mscorlib]], mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 12
+ Data: 38
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: DEBUG_ReverseUnityLightmapST
+ - Name: $v
+ Entry: 7
+ Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: DEBUG_ReverseUnityLightmapST
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 3|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Boolean, mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _Renderers
+ - Name: $v
+ Entry: 7
+ Data: 5|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _Renderers
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 6|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Renderer[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 6
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 7|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 1
+ - Name:
+ Entry: 7
+ Data: 8|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
+ - Name: header
+ Entry: 1
+ Data: Internal Data (auto-generated, do not edit!)
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_DefaultLightmap
+ - Name: $v
+ Entry: 7
+ Data: 9|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_DefaultLightmap
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 10|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Texture2D, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 11|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Lightmaps
+ - Name: $v
+ Entry: 7
+ Data: 12|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Lightmaps
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 13|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Texture2D[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 13
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 14|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_LightmapST
+ - Name: $v
+ Entry: 7
+ Data: 15|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_LightmapST
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 16|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Vector4[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 17|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Mask
+ - Name: $v
+ Entry: 7
+ Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Mask
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 19|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Single[], mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 19
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 20|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_MaskAvatars
+ - Name: $v
+ Entry: 7
+ Data: 21|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_MaskAvatars
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 19
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 19
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 22|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_LightmapMult
+ - Name: $v
+ Entry: 7
+ Data: 23|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_LightmapMult
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 24|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Vector4, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 24
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 25|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _Screens
+ - Name: $v
+ Entry: 7
+ Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _Screens
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 27|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.GameObject[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 27
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 28|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_lut1
+ - Name: $v
+ Entry: 7
+ Data: 29|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_lut1
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 30|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_lut2
+ - Name: $v
+ Entry: 7
+ Data: 31|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_lut2
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 32|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_LODs
+ - Name: $v
+ Entry: 7
+ Data: 33|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_LODs
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 34|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Texture[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 34
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 35|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Static_LODs_0
+ - Name: $v
+ Entry: 7
+ Data: 36|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Static_LODs_0
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 37|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Texture2DArray, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 38|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Static_LODs_1
+ - Name: $v
+ Entry: 7
+ Data: 39|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Static_LODs_1
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 40|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Static_LODs_2
+ - Name: $v
+ Entry: 7
+ Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Static_LODs_2
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 42|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Static_LODs_3
+ - Name: $v
+ Entry: 7
+ Data: 43|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Static_LODs_3
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 37
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 44|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_0
+ - Name: $v
+ Entry: 7
+ Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_0
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 46|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_1
+ - Name: $v
+ Entry: 7
+ Data: 47|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_1
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 48|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_2
+ - Name: $v
+ Entry: 7
+ Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_2
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 50|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_3
+ - Name: $v
+ Entry: 7
+ Data: 51|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_3
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 52|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_0t
+ - Name: $v
+ Entry: 7
+ Data: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_0t
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 54|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_1t
+ - Name: $v
+ Entry: 7
+ Data: 55|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_1t
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 56|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_2t
+ - Name: $v
+ Entry: 7
+ Data: 57|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_2t
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 58|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_Vertices_3t
+ - Name: $v
+ Entry: 7
+ Data: 59|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_Vertices_3t
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 60|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ExtraData
+ - Name: $v
+ Entry: 7
+ Data: 61|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ExtraData
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 16
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 62|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_static_uniforms
+ - Name: $v
+ Entry: 7
+ Data: 63|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_static_uniforms
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 10
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 64|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ScreenTransforms
+ - Name: $v
+ Entry: 7
+ Data: 65|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ScreenTransforms
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 66|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.Transform[], UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 66
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 67|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ScreenCount
+ - Name: $v
+ Entry: 7
+ Data: 68|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ScreenCount
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 69|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Int32, mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 70|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ScreenCountMaskedAvatars
+ - Name: $v
+ Entry: 7
+ Data: 71|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ScreenCountMaskedAvatars
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 72|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ScreenCountMasked
+ - Name: $v
+ Entry: 7
+ Data: 73|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ScreenCountMasked
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 74|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Int32[], mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 74
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 75|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _LTCGI_ScreenCountDynamic
+ - Name: $v
+ Entry: 7
+ Data: 76|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _LTCGI_ScreenCountDynamic
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 77|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: BlurCRTInput
+ - Name: $v
+ Entry: 7
+ Data: 78|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: BlurCRTInput
+ - Name: <UserType>k__BackingField
+ Entry: 7
+ Data: 79|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.CustomRenderTexture, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 79
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 80|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: prop_Udon_LTCGI_ExtraData
+ - Name: $v
+ Entry: 7
+ Data: 81|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: prop_Udon_LTCGI_ExtraData
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 82|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_0
+ - Name: $v
+ Entry: 7
+ Data: 83|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_0
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 84|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_1
+ - Name: $v
+ Entry: 7
+ Data: 85|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_1
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 86|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_2
+ - Name: $v
+ Entry: 7
+ Data: 87|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_2
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 88|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_3
+ - Name: $v
+ Entry: 7
+ Data: 89|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: prop_Udon_LTCGI_Vertices_3
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 69
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 90|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data:
+ - Name: $k
+ Entry: 1
+ Data: _globalState
+ - Name: $v
+ Entry: 7
+ Data: 91|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: <Name>k__BackingField
+ Entry: 1
+ Data: _globalState
+ - Name: <UserType>k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: <SystemType>k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: <SyncMode>k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: <IsSerialized>k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 92|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 0
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 13
+ Data:
+ - Name:
+ Entry: 8
+ Data:
diff --git a/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.cs b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.cs
new file mode 100644
index 0000000..857707e
--- /dev/null
+++ b/Third_Party/at.pimaker.ltcgi/Runtime/LTCGI_UdonAdapter.cs
@@ -0,0 +1,445 @@
+using System;
+using UnityEngine;
+
+#if UDONSHARP
+using UdonSharp;
+using VRC.SDKBase;
+using VRC.Udon;
+#endif
+
+#if COMPILER_UDONSHARP
+using GlobalShader = VRC.SDKBase.VRCShader;
+#else
+using GlobalShader = UnityEngine.Shader;
+#endif
+
+#if UDONSHARP
+[UdonBehaviourSyncMode(BehaviourSyncMode.None)]
+public class LTCGI_UdonAdapter : UdonSharpBehaviour
+#else
+// FIXME: This makes the filename mismatch the class name
+// - I think Unity doesn't like that?
+public class LTCGI_RuntimeAdapter : MonoBehaviour
+#endif
+
+{
+ // perhaps fixes some lightmap issues with static batching?
+ public bool DEBUG_ReverseUnityLightmapST = false;
+
+ [Header("Internal Data (auto-generated, do not edit!)")]
+ public Renderer[] _Renderers;
+ public Texture2D _LTCGI_DefaultLightmap;
+ public Texture2D[] _LTCGI_Lightmaps;
+ public Vector4[] _LTCGI_LightmapST;
+ public float[] _LTCGI_Mask;
+ public float[] _LTCGI_MaskAvatars;
+ public Vector4 _LTCGI_LightmapMult;
+ public GameObject[] _Screens;
+ public Texture2D _LTCGI_lut1, _LTCGI_lut2;
+ public Texture[] _LTCGI_LODs;
+ public Texture2DArray _LTCGI_Static_LODs_0;
+ public Texture2DArray _LTCGI_Static_LODs_1;
+ public Texture2DArray _LTCGI_Static_LODs_2;
+ public Texture2DArray _LTCGI_Static_LODs_3;
+ public Vector4[] _LTCGI_Vertices_0, _LTCGI_Vertices_1, _LTCGI_Vertices_2, _LTCGI_Vertices_3;
+ private Vector4[] _LTCGI_Vertices_0t, _LTCGI_Vertices_1t, _LTCGI_Vertices_2t, _LTCGI_Vertices_3t;
+ public Vector4[] _LTCGI_ExtraData;
+ public Texture2D _LTCGI_static_uniforms;
+ public Transform[] _LTCGI_ScreenTransforms;
+ public int _LTCGI_ScreenCount;
+ public int _LTCGI_ScreenCountMaskedAvatars;
+ public int[] _LTCGI_ScreenCountMasked;
+ public int _LTCGI_ScreenCountDynamic;
+ public CustomRenderTexture BlurCRTInput;
+
+ private int prop_Udon_LTCGI_ExtraData;
+ private int prop_Udon_LTCGI_Vertices_0;
+ private int prop_Udon_LTCGI_Vertices_1;
+ private int prop_Udon_LTCGI_Vertices_2;
+ private int prop_Udon_LTCGI_Vertices_3;
+
+ void Start()
+ {
+ Debug.Log("LTCGI adapter start");
+
+ if (DEBUG_ReverseUnityLightmapST)
+ {
+ Debug.LogWarning("WARNING: LTCGI DEBUG_ReverseUnityLightmapST is active! This is probably not what you want!");
+ }
+
+ if (_LTCGI_ScreenCount == 0)
+ {
+ Debug.LogError("LTCGI Adapter: No screens found! Try deleting the LTCGI_UdonAdapter component from the controller object and clicking 'Force Update' on the controller if this is unexpected.");
+ this.enabled = false;
+ return;
+ }
+
+ var stopwatch = new System.Diagnostics.Stopwatch();
+ stopwatch.Start();
+ _Initialize();
+ stopwatch.Stop();
+
+ var udon = false;
+#if UDONSHARP
+ udon = true;
+#endif
+ Debug.Log($"LTCGI adapter started for {_LTCGI_ScreenCount} ({_LTCGI_ScreenCountDynamic} dynamic) screens (max: {_LTCGI_Vertices_0t.Length}), {_Renderers.Length} renderers, GlobalShader mode, udon: {udon}, took: {stopwatch.ElapsedMilliseconds}ms");
+
+ if (_LTCGI_ScreenCountDynamic == 0 || _Renderers.Length == 0)
+ {
+ Debug.Log("LTCGI adapter going to sleep 😴");
+ this.enabled = false;
+ }
+ }
+
+ public void _Initialize()
+ {
+ // must be full length (16) otherwise Unity will allocate too little GPU memory and this may break between worlds that use different amounts of screens
+ // pretty cursed, but w/e, keep in mind that this means vrc worlds that adjust the max cap above 16 will most likely not work in-game
+ var maxScreens = _LTCGI_Vertices_0.Length;
+ _LTCGI_Vertices_0t = new Vector4[maxScreens];
+ _LTCGI_Vertices_1t = new Vector4[maxScreens];
+ _LTCGI_Vertices_2t = new Vector4[maxScreens];
+ _LTCGI_Vertices_3t = new Vector4[maxScreens];
+
+ for (int i = 0; i < _LTCGI_ScreenCount; i++)
+ {
+ var transform = _LTCGI_ScreenTransforms[i];
+ _LTCGI_Vertices_0t[i] = CalcTransform(_LTCGI_Vertices_0[i], transform);
+ _LTCGI_Vertices_1t[i] = CalcTransform(_LTCGI_Vertices_1[i], transform);
+ _LTCGI_Vertices_2t[i] = CalcTransform(_LTCGI_Vertices_2[i], transform);
+ _LTCGI_Vertices_3t[i] = CalcTransform(_LTCGI_Vertices_3[i], transform);
+ }
+
+ // Set global material properties (anything not overridden below is for avatar support)
+ for (int j = 0; j < _LTCGI_LODs.Length; j++)
+ if (_LTCGI_LODs[j] != null)
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD" + j), _LTCGI_LODs[j]);
+
+ if (_LTCGI_Static_LODs_0 != null)
+ {
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD0_arr"), _LTCGI_Static_LODs_0);
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD1_arr"), _LTCGI_Static_LODs_1);
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD2_arr"), _LTCGI_Static_LODs_2);
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD3_arr"), _LTCGI_Static_LODs_3);
+ }
+
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_lut1"), _LTCGI_lut1);
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_lut2"), _LTCGI_lut2);
+
+ GlobalShader.SetGlobalFloatArray(GlobalShader.PropertyToID("_Udon_LTCGI_Mask"), _LTCGI_MaskAvatars);
+ #if COMPILER_UDONSHARP
+ GlobalShader.SetGlobalInteger(GlobalShader.PropertyToID("_Udon_LTCGI_ScreenCount"), _LTCGI_ScreenCountMaskedAvatars);
+ #else
+ GlobalShader.SetGlobalInt(GlobalShader.PropertyToID("_Udon_LTCGI_ScreenCount"), _LTCGI_ScreenCountMaskedAvatars);
+ #endif
+
+ _SetGlobalState(true);
+
+ if (_LTCGI_static_uniforms != null)
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_static_uniforms"), _LTCGI_static_uniforms);
+ if (_LTCGI_DefaultLightmap != null)
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Lightmap"), _LTCGI_DefaultLightmap);
+
+ // Set per world-renderer overrides
+ var maskSubset = new float[_LTCGI_ScreenCount];
+ for (int i = 0; i < _Renderers.Length; i++)
+ {
+ var r = _Renderers[i];
+ var block = new MaterialPropertyBlock();
+ if (r.HasPropertyBlock())
+ r.GetPropertyBlock(block);
+
+ Array.Copy(_LTCGI_Mask, i * _LTCGI_ScreenCount, maskSubset, 0, _LTCGI_ScreenCount);
+ block.SetFloatArray("_Udon_LTCGI_Mask", maskSubset);
+ block.SetInt("_Udon_LTCGI_ScreenCount", _LTCGI_ScreenCountMasked[i]);
+
+ if (_LTCGI_Lightmaps[i] != null)
+ block.SetTexture("_Udon_LTCGI_Lightmap", _LTCGI_Lightmaps[i]);
+ block.SetVector("_Udon_LTCGI_LightmapMult", _LTCGI_LightmapMult);
+ var lmst = _LTCGI_LightmapST[i];
+ if (DEBUG_ReverseUnityLightmapST)
+ {
+ // workaround?
+ lmst.x /= r.lightmapScaleOffset.x;
+ lmst.y /= r.lightmapScaleOffset.y;
+ lmst.z -= r.lightmapScaleOffset.z;
+ lmst.w -= r.lightmapScaleOffset.w;
+ }
+ block.SetVector("_Udon_LTCGI_LightmapST", lmst);
+
+ r.SetPropertyBlock(block);
+ }
+
+ prop_Udon_LTCGI_ExtraData = GlobalShader.PropertyToID("_Udon_LTCGI_ExtraData");
+ prop_Udon_LTCGI_Vertices_0 = GlobalShader.PropertyToID("_Udon_LTCGI_Vertices_0");
+ prop_Udon_LTCGI_Vertices_1 = GlobalShader.PropertyToID("_Udon_LTCGI_Vertices_1");
+ prop_Udon_LTCGI_Vertices_2 = GlobalShader.PropertyToID("_Udon_LTCGI_Vertices_2");
+ prop_Udon_LTCGI_Vertices_3 = GlobalShader.PropertyToID("_Udon_LTCGI_Vertices_3");
+
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_ExtraData, _LTCGI_ExtraData);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_0, _LTCGI_Vertices_0t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_1, _LTCGI_Vertices_1t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_2, _LTCGI_Vertices_2t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_3, _LTCGI_Vertices_3t);
+ }
+
+ private Vector4 CalcTransform(Vector4 i, Transform t)
+ {
+ var ret = (Vector4)t.TransformPoint((Vector3)i);
+ ret.w = i.w; // keep UV the same
+ return ret;
+ }
+
+ void Update()
+ {
+ // update vertex data
+ for (int i = 0; i < _LTCGI_ScreenCountDynamic /* only run for dynamic screens */; i++)
+ {
+ var transform = _LTCGI_ScreenTransforms[i];
+ _LTCGI_Vertices_0t[i] = CalcTransform(_LTCGI_Vertices_0[i], transform);
+ _LTCGI_Vertices_1t[i] = CalcTransform(_LTCGI_Vertices_1[i], transform);
+ _LTCGI_Vertices_2t[i] = CalcTransform(_LTCGI_Vertices_2[i], transform);
+ _LTCGI_Vertices_3t[i] = CalcTransform(_LTCGI_Vertices_3[i], transform);
+ }
+
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_ExtraData, _LTCGI_ExtraData);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_0, _LTCGI_Vertices_0t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_1, _LTCGI_Vertices_1t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_2, _LTCGI_Vertices_2t);
+ GlobalShader.SetGlobalVectorArray(prop_Udon_LTCGI_Vertices_3, _LTCGI_Vertices_3t);
+ }
+
+ // See the docs for more info:
+ // https://github.com/PiMaker/ltcgi/wiki#udonsharp-api
+
+ public int _GetIndex(GameObject screen)
+ {
+ var idx = Array.IndexOf(_Screens, screen);
+ if (idx != -1)
+ {
+ // if (idx >= _LTCGI_ScreenCountDynamic)
+ // {
+ // Debug.LogError("LTCGI: Cannot index non-dynamic object " + screen.name);
+ // return -1;
+ // }
+
+ return idx;
+ }
+ else
+ {
+ Debug.LogError("LTCGI: Cannot index unregistered object " + (screen == null ? "<null>" : screen.name));
+ return -1;
+ }
+ }
+
+ public Color _GetColor(int screen)
+ {
+ if (screen < 0) return Color.black;
+ var data = _LTCGI_ExtraData[screen];
+ return new Color(data.x, data.y, data.z);
+ }
+
+ public void _SetColor(int screen, Color color)
+ {
+ if (screen < 0) return;
+ _LTCGI_ExtraData[screen].x = color.r;
+ _LTCGI_ExtraData[screen].y = color.g;
+ _LTCGI_ExtraData[screen].z = color.b;
+
+ if (!this.enabled) Update();
+ }
+
+ public void _SetVideoTexture(Texture texture)
+ {
+ BlurCRTInput.material.SetTexture("_MainTex", texture);
+ GlobalShader.SetGlobalTexture(GlobalShader.PropertyToID("_Udon_LTCGI_Texture_LOD0"), texture);
+ }
+
+ private uint getFlags(int screen)
+ {
+ var raw = _LTCGI_ExtraData[screen].w;
+ var buffer = new byte[4];
+ WriteSingle(raw, buffer, 0);
+ return ReadUInt32(buffer, 0);
+ }
+
+ private void setFlags(int screen, uint flags)
+ {
+ var buffer = new byte[4];
+ WriteUInt32(flags, buffer, 0);
+ var raw = ReadSingle(buffer, 0);
+ _LTCGI_ExtraData[screen].w = raw;
+ }
+
+ public void _SetTexture(int screen, uint index)
+ {
+ if (screen < 0) return;
+ var flags = getFlags(screen);
+ flags &= ~(0xfU << 4);
+ flags |= (index & 0xf) << 4;
+ setFlags(screen, flags);
+
+ if (!this.enabled) Update();
+ }
+
+ private bool _globalState = false;
+ public void _SetGlobalState(bool enabled)
+ {
+ float fstate = enabled ? 1.0f : 0.0f;
+ GlobalShader.SetGlobalFloat(GlobalShader.PropertyToID("_Udon_LTCGI_GlobalEnable"), fstate);
+ _globalState = enabled;
+ }
+ public bool _GetGlobalState() => _globalState;
+
+ // Below code from: https://github.com/Xytabich/UNet
+
+ private const int BIT8 = 8;
+ private const int BIT16 = 16;
+ private const int BIT24 = 24;
+ private const int BIT32 = 32;
+ private const int BIT40 = 40;
+ private const int BIT48 = 48;
+ private const int BIT56 = 56;
+
+ private const uint FLOAT_SIGN_BIT = 0x80000000;
+ private const uint FLOAT_EXP_MASK = 0x7F800000;
+ private const uint FLOAT_FRAC_MASK = 0x007FFFFF;
+
+ /// <summary>
+ /// Writes unsigned 32-bit integer (<see cref="uint"/>)
+ /// </summary>
+ /// <remarks>Takes 4 bytes</remarks>
+ /// <param name="buffer">Target buffer</param>
+ /// <param name="index">Index in the buffer at which to start writing data</param>
+ /// <returns>Size in bytes</returns>
+ public int WriteUInt32(uint value, byte[] buffer, int index)
+ {
+ buffer[index] = (byte)((value >> BIT24) & 255u);
+ index++;
+ buffer[index] = (byte)((value >> BIT16) & 255u);
+ index++;
+ buffer[index] = (byte)((value >> BIT8) & 255u);
+ index++;
+ buffer[index] = (byte)(value & 255u);
+ return 4;
+ }
+
+ /// <summary>
+ /// Reads unsigned 32-bit integer (<see cref="uint"/>)
+ /// </summary>
+ /// <remarks>Takes 4 bytes</remarks>
+ /// <param name="buffer">Target buffer</param>
+ /// <param name="index">Index in the buffer where to start reading data</param>
+ public uint ReadUInt32(byte[] buffer, int index)
+ {
+ uint value = 0;
+ value |= (uint)buffer[index] << BIT24;
+ index++;
+ value |= (uint)buffer[index] << BIT16;
+ index++;
+ value |= (uint)buffer[index] << BIT8;
+ index++;
+ value |= (uint)buffer[index];
+ return value;
+ }
+
+ /// <summary>
+ /// Writes single-precision floating-point number
+ /// </summary>
+ /// <remarks>Takes 4 bytes</remarks>
+ /// <param name="buffer">Target buffer</param>
+ /// <param name="index">Index in the buffer at which to start writing data</param>
+ /// <returns>Size in bytes</returns>
+ public int WriteSingle(float value, byte[] buffer, int index)
+ {
+ uint tmp = 0;
+ if(float.IsNaN(value))
+ {
+ tmp = FLOAT_EXP_MASK | FLOAT_FRAC_MASK;
+ }
+ else if(float.IsInfinity(value))
+ {
+ tmp = FLOAT_EXP_MASK;
+ if(float.IsNegativeInfinity(value)) tmp |= FLOAT_SIGN_BIT;
+ }
+ else if(value != 0f)
+ {
+ if(value < 0f)
+ {
+ value = -value;
+ tmp |= FLOAT_SIGN_BIT;
+ }
+
+ int exp = 0;
+ bool normal = true;
+ while(value >= 2f)
+ {
+ value *= 0.5f;
+ exp++;
+ }
+ while(value < 1f)
+ {
+ if(exp == -126)
+ {
+ normal = false;
+ break;
+ }
+ value *= 2f;
+ exp--;
+ }
+
+ if(normal)
+ {
+ value -= 1f;
+ exp += 127;
+ }
+ else exp = 0;
+
+ tmp |= Convert.ToUInt32(exp << 23) & FLOAT_EXP_MASK;
+ tmp |= Convert.ToUInt32(value * (2 << 22)) & FLOAT_FRAC_MASK;
+ }
+ return WriteUInt32(tmp, buffer, index);
+ }
+
+ /// <summary>
+ /// Reads single-precision floating-point number
+ /// </summary>
+ /// <remarks>Takes 4 bytes</remarks>
+ /// <param name="buffer">Target buffer</param>
+ /// <param name="index">Index in the buffer where to start reading data</param>
+ public float ReadSingle(byte[] buffer, int index)
+ {
+ uint value = ReadUInt32(buffer, index);
+ if(value == 0 || value == FLOAT_SIGN_BIT) return 0f;
+
+ int exp = (int)((value & FLOAT_EXP_MASK) >> 23);
+ int frac = (int)(value & FLOAT_FRAC_MASK);
+ bool negate = (value & FLOAT_SIGN_BIT) == FLOAT_SIGN_BIT;
+ if(exp == 0xFF)
+ {
+ if(frac == 0)
+ {
+ return negate ? float.NegativeInfinity : float.PositiveInfinity;
+ }
+ return float.NaN;
+ }
+
+ bool normal = exp != 0x00;
+ if(normal) exp -= 127;
+ else exp = -126;
+
+ float result = frac / (float)(2 << 22);
+ if(normal) result += 1f;
+
+ result *= Mathf.Pow(2, exp);
+ if(negate) result = -result;
+ return result;
+ }
+
+ // extremely cursed compat stuff
+ #if !UDONSHARP
+ public void UpdateProxy() {}
+ public void ApplyProxyModifications() {}
+ #endif
+} \ No newline at end of file