diff --git a/Packages/tlp.udonutils/README.md b/Packages/tlp.udonutils/README.md
index 6d690b5..1289005 100644
--- a/Packages/tlp.udonutils/README.md
+++ b/Packages/tlp.udonutils/README.md
@@ -36,6 +36,17 @@ The used pattern MAJOR.MINOR.PATCH indicates:
All notable changes to this project will be documented in this file.
+### [10.0.0] - 2024-11-02
+
+#### 🚀 Features
+
+- *(StateMachine)* Add transtion to delayed method to statemachine
+- [**breaking**] Deterministic execution order of scripts to address know VRC-bug
+
+#### 🐛 Bug Fixes
+
+- *(RigidbodyVelocityProvider)* Add missing dependency validation
+
### [9.0.0] - 2024-08-20
#### 🚀 Features
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.asset b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.asset
index e9b3bf8..5fa0a1e 100644
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.asset
+++ b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: bfdd9ee40435204498a122768d780b74, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 1
+ behaviourSyncMode: 2
hasInteractEvent: 0
scriptID: 3490165456808884842
serializationData:
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.cs b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.cs
index d1dffdc..f127db0 100644
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.cs
+++ b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolAdapter.cs
@@ -10,17 +10,17 @@ namespace TLP.UdonUtils.Runtime.Adapters.Cyan
{
///
/// Adapter that allows retrieving objects from the CyanPlayerObjectPool
- /// with having to reference it directly.
+ /// without having to reference it directly.
///
- [UdonBehaviourSyncMode(BehaviourSyncMode.None)]
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
[DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(CyanPoolAdapter), ExecutionOrder)]
public class CyanPoolAdapter : TlpBaseBehaviour
{
- [PublicAPI]
protected override int ExecutionOrderReadOnly => ExecutionOrder;
[PublicAPI]
- public new const int ExecutionOrder = TlpExecutionOrder.DefaultEnd;
+ public new const int ExecutionOrder = CyanPoolEventListener.ExecutionOrder + 1;
[FormerlySerializedAs("cyanPlayerObjectAssigner")]
public CyanPlayerObjectAssigner CyanPlayerObjectAssigner;
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset
deleted file mode 100644
index 5fc4d6f..0000000
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset
+++ /dev/null
@@ -1,992 +0,0 @@
-%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: CyanPoolEventListener
- m_EditorClassIdentifier:
- serializedUdonProgramAsset: {fileID: 11400000, guid: e2e30a2cffe59bf478fe7ac646e96695,
- type: 2}
- udonAssembly:
- assemblyError:
- sourceCsScript: {fileID: 11500000, guid: d7b87b9200c2e0542badfafbc369daa9, type: 3}
- scriptVersion: 2
- compiledVersion: 2
- behaviourSyncMode: 0
- hasInteractEvent: 0
- scriptID: -3380246762151393710
- 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: 15
- - Name:
- Entry: 7
- Data:
- - Name: $k
- Entry: 1
- Data: AutoRetrySendOnFailure
- - Name: $v
- Entry: 7
- Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: AutoRetrySendOnFailure
- - Name: k__BackingField
- Entry: 7
- Data: 3|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: System.Boolean, mscorlib
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 5|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- - Name: header
- Entry: 1
- Data: TLP/Networking
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 6|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: If true and a serialization request fails it will automatically try to
- send again in the next frame until it succeeds. Only applies to owned objects
- and manual sync.
- - 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: PauseSynchronization
- - Name: $v
- Entry: 7
- Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PauseSynchronization
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 2
- - Name:
- Entry: 7
- Data: 9|UnityEngine.SerializeField, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 10|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: Has no effect unless implemented by this particular script. See SyncPaused
- property for details.
- - 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: Severity
- - Name: $v
- Entry: 7
- Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: Severity
- - Name: k__BackingField
- Entry: 7
- Data: 12|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.Logger.ELogLevel, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: 13|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: System.Int32, mscorlib
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 3
- - Name:
- Entry: 7
- Data: 15|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- - Name: header
- Entry: 1
- Data: TLP/Logging
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 16|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 17|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: 'What kind of logs of this behavior shall be produced. Selected severity
- includes all more severe levels. Example: selecting ''Warning'' also allows
- ''Error'' and ''Assertion'' messages to appear.
-
- Note:
-
- ''Debug''
- messages are filtered out by default, even when selected. Add the compiler
- definition ''TLP_DEBUG'' in the Unity player settings to enable them. This
- should only ever be used for debugging (performance suffers)!'
- - 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: PendingSerializations
- - Name: $v
- Entry: 7
- Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PendingSerializations
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - Name: _fieldAttributes
- Entry: 7
- Data: 19|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: _hadLogger
- - Name: $v
- Entry: 7
- Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: _hadLogger
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - Name: _fieldAttributes
- Entry: 7
- Data: 21|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: k__BackingField
- - Name: $v
- Entry: 7
- Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: k__BackingField
- - Name: k__BackingField
- Entry: 7
- Data: 23|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.Logger.TlpLogger, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: 24|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: VRC.Udon.UdonBehaviour, VRC.Udon
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - 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: EventInstigator
- - Name: $v
- Entry: 7
- Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: EventInstigator
- - Name: k__BackingField
- Entry: 7
- Data: 27|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.TlpBaseBehaviour, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 3
- - Name:
- Entry: 7
- Data: 29|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 30|UnityEngine.HideInInspector, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 31|JetBrains.Annotations.PublicAPIAttribute, 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: Pool
- - Name: $v
- Entry: 7
- Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: Pool
- - Name: k__BackingField
- Entry: 9
- Data: 27
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 3
- - Name:
- Entry: 7
- Data: 34|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 35|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 36|UnityEngine.HideInInspector, 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: PoolableInUse
- - Name: $v
- Entry: 7
- Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PoolableInUse
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 39|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 40|UnityEngine.HideInInspector, 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: playerAssignedPlayer
- - Name: $v
- Entry: 7
- Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerAssignedPlayer
- - Name: k__BackingField
- Entry: 7
- Data: 42|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: VRC.SDKBase.VRCPlayerApi, VRCSDKBase
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 42
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 1
- - Name:
- Entry: 7
- Data: 44|JetBrains.Annotations.PublicAPIAttribute, 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: playerAssignedIndex
- - Name: $v
- Entry: 7
- Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerAssignedIndex
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 47|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 48|UnityEngine.HideInInspector, 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: playerAssignedPoolObject
- - Name: $v
- Entry: 7
- Data: 49|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerAssignedPoolObject
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 51|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 52|UnityEngine.HideInInspector, 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: playerUnassignedPlayer
- - Name: $v
- Entry: 7
- Data: 53|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerUnassignedPlayer
- - Name: k__BackingField
- Entry: 9
- Data: 42
- - Name: k__BackingField
- Entry: 9
- Data: 42
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 54|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 1
- - Name:
- Entry: 7
- Data: 55|JetBrains.Annotations.PublicAPIAttribute, 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: playerUnassignedIndex
- - Name: $v
- Entry: 7
- Data: 56|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerUnassignedIndex
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 57|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 2
- - Name:
- Entry: 7
- Data: 58|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 59|UnityEngine.HideInInspector, 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: playerUnassignedPoolObject
- - Name: $v
- Entry: 7
- Data: 60|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: playerUnassignedPoolObject
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 61|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 2
- - Name:
- Entry: 7
- Data: 62|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 63|UnityEngine.HideInInspector, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - 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/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset.meta b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset.meta
deleted file mode 100644
index 4ef132c..0000000
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.asset.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 60d3e5d5021602c47abc7f97b673f172
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 11400000
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.cs b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.cs
index c71432e..58e4256 100644
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.cs
+++ b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPoolEventListener.cs
@@ -5,8 +5,17 @@
namespace TLP.UdonUtils.Runtime.Adapters.Cyan
{
- public class CyanPoolEventListener : TlpBaseBehaviour
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(CyanPoolEventListener), ExecutionOrder)]
+ public abstract class CyanPoolEventListener : TlpBaseBehaviour
{
+
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = CyanPooledObject.ExecutionOrder + 1;
+
+
///
/// This event is called when the local player's pool object has been assigned.
///
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset
deleted file mode 100644
index c75e9f1..0000000
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset
+++ /dev/null
@@ -1,758 +0,0 @@
-%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: CyanPooledObject
- m_EditorClassIdentifier:
- serializedUdonProgramAsset: {fileID: 11400000, guid: ba00cf80547953541bc33f9d1b33cfec,
- type: 2}
- udonAssembly:
- assemblyError:
- sourceCsScript: {fileID: 11500000, guid: 321691466c540cf40b4d1e70bb5674ea, type: 3}
- scriptVersion: 2
- compiledVersion: 2
- behaviourSyncMode: 0
- hasInteractEvent: 0
- scriptID: 8873734069264360041
- 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: 11
- - Name:
- Entry: 7
- Data:
- - Name: $k
- Entry: 1
- Data: AutoRetrySendOnFailure
- - Name: $v
- Entry: 7
- Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: AutoRetrySendOnFailure
- - Name: k__BackingField
- Entry: 7
- Data: 3|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: System.Boolean, mscorlib
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 5|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- - Name: header
- Entry: 1
- Data: TLP/Networking
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 6|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: If true and a serialization request fails it will automatically try to
- send again in the next frame until it succeeds. Only applies to owned objects
- and manual sync.
- - 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: PauseSynchronization
- - Name: $v
- Entry: 7
- Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PauseSynchronization
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 2
- - Name:
- Entry: 7
- Data: 9|UnityEngine.SerializeField, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 10|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: Has no effect unless implemented by this particular script. See SyncPaused
- property for details.
- - 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: Severity
- - Name: $v
- Entry: 7
- Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: Severity
- - Name: k__BackingField
- Entry: 7
- Data: 12|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.Logger.ELogLevel, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: 13|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: System.Int32, mscorlib
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 3
- - Name:
- Entry: 7
- Data: 15|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
- - Name: header
- Entry: 1
- Data: TLP/Logging
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 16|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 17|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
- - Name: tooltip
- Entry: 1
- Data: 'What kind of logs of this behavior shall be produced. Selected severity
- includes all more severe levels. Example: selecting ''Warning'' also allows
- ''Error'' and ''Assertion'' messages to appear.
-
- Note:
-
- ''Debug''
- messages are filtered out by default, even when selected. Add the compiler
- definition ''TLP_DEBUG'' in the Unity player settings to enable them. This
- should only ever be used for debugging (performance suffers)!'
- - 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: PendingSerializations
- - Name: $v
- Entry: 7
- Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PendingSerializations
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 9
- Data: 13
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - Name: _fieldAttributes
- Entry: 7
- Data: 19|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: _hadLogger
- - Name: $v
- Entry: 7
- Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: _hadLogger
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - Name: _fieldAttributes
- Entry: 7
- Data: 21|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: k__BackingField
- - Name: $v
- Entry: 7
- Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: k__BackingField
- - Name: k__BackingField
- Entry: 7
- Data: 23|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.Logger.TlpLogger, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: 24|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: VRC.Udon.UdonBehaviour, VRC.Udon
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: false
- - 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: EventInstigator
- - Name: $v
- Entry: 7
- Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: EventInstigator
- - Name: k__BackingField
- Entry: 7
- Data: 27|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.TlpBaseBehaviour, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 3
- - Name:
- Entry: 7
- Data: 29|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 30|UnityEngine.HideInInspector, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 31|JetBrains.Annotations.PublicAPIAttribute, 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: Pool
- - Name: $v
- Entry: 7
- Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: Pool
- - Name: k__BackingField
- Entry: 9
- Data: 27
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 3
- - Name:
- Entry: 7
- Data: 34|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 35|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 36|UnityEngine.HideInInspector, 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: PoolableInUse
- - Name: $v
- Entry: 7
- Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: PoolableInUse
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 9
- Data: 3
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: 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: 2
- - Name:
- Entry: 7
- Data: 39|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - Name:
- Entry: 7
- Data: 40|UnityEngine.HideInInspector, 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: CyanPoolAdapter
- - Name: $v
- Entry: 7
- Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: CyanPoolAdapter
- - Name: k__BackingField
- Entry: 7
- Data: 42|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: TLP.UdonUtils.Runtime.Adapters.Cyan.CyanPoolAdapter, TLP.UdonUtils.Runtime
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 24
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 1
- - Name:
- Entry: 7
- Data: 44|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: Owner
- - Name: $v
- Entry: 7
- Data: 45|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- - Name: k__BackingField
- Entry: 1
- Data: Owner
- - Name: k__BackingField
- Entry: 7
- Data: 46|System.RuntimeType, mscorlib
- - Name:
- Entry: 1
- Data: VRC.SDKBase.VRCPlayerApi, VRCSDKBase
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 9
- Data: 46
- - Name: k__BackingField
- Entry: 7
- Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
- - Name:
- Entry: 6
- Data:
- - Name:
- Entry: 8
- Data:
- - Name: k__BackingField
- Entry: 5
- Data: true
- - Name: _fieldAttributes
- Entry: 7
- Data: 47|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- - Name:
- Entry: 12
- Data: 1
- - Name:
- Entry: 7
- Data: 48|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
- - Name:
- Entry: 8
- Data:
- - 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/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset.meta b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset.meta
deleted file mode 100644
index 037e980..0000000
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.asset.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 00671ad43173c7d4581e3b3cdd1faee9
-NativeFormatImporter:
- externalObjects: {}
- mainObjectFileID: 11400000
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.cs b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.cs
index eb83806..4ad3225 100644
--- a/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.cs
+++ b/Packages/tlp.udonutils/Runtime/Adapters/Cyan/CyanPooledObject.cs
@@ -1,11 +1,23 @@
using JetBrains.Annotations;
+using TLP.UdonUtils.Runtime.Events;
+using TLP.UdonUtils.Runtime.Sync;
+using UnityEngine;
using UnityEngine.Serialization;
using VRC.SDKBase;
namespace TLP.UdonUtils.Runtime.Adapters.Cyan
{
- public class CyanPooledObject : TlpBaseBehaviour
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(CyanPooledObject), ExecutionOrder)]
+ public abstract class CyanPooledObject : TlpBaseBehaviour
{
+
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = VehicleMotionEvent.ExecutionOrder + 1;
+
+
[FormerlySerializedAs("cyanPoolAdapter")]
public CyanPoolAdapter CyanPoolAdapter;
diff --git a/Packages/tlp.udonutils/Runtime/AssemblyInfo.cs b/Packages/tlp.udonutils/Runtime/AssemblyInfo.cs
index 1f3ecd4..3e2505a 100644
--- a/Packages/tlp.udonutils/Runtime/AssemblyInfo.cs
+++ b/Packages/tlp.udonutils/Runtime/AssemblyInfo.cs
@@ -1,4 +1,4 @@
using System.Runtime.CompilerServices;
[assembly: InternalsVisibleTo("TLP.UdonUtils.Tests.Editor")]
-[assembly: InternalsVisibleTo("TLP.UdonUtils.Tests.Runtime")]
\ No newline at end of file
+[assembly: InternalsVisibleTo("TLP.UdonUtils.Tests.Runtime")]
diff --git a/Packages/tlp.udonutils/Runtime/Attributes.meta b/Packages/tlp.udonutils/Runtime/Attributes.meta
new file mode 100644
index 0000000..4be4fff
--- /dev/null
+++ b/Packages/tlp.udonutils/Runtime/Attributes.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: c8d1b84753914259be24e011fed6cef1
+timeCreated: 1730292151
\ No newline at end of file
diff --git a/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs b/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs
new file mode 100644
index 0000000..ae5eb2b
--- /dev/null
+++ b/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs
@@ -0,0 +1,315 @@
+#define DEBUG_EXECUTION_ORDER
+
+using System;
+using System.Collections.Generic;
+using System.Data;
+using System.Linq;
+using System.Reflection;
+using UnityEngine;
+
+[AttributeUsage(AttributeTargets.Class)]
+public class ExecuteAfterAttribute : DefaultExecutionOrder
+{
+ public class Dependency
+ {
+ public int Order { get; set; }
+ public HashSet ExecuteAfter { get; } = new HashSet();
+ }
+
+ internal static readonly Dictionary s_HandledTypes = new Dictionary();
+
+ ///
+ /// Changes the execution order of the class it is attached to to be greater than all of the execution order values of
+ /// the Types provided.
+ ///
+ /// MonoBehaviour type this Attribute is attached to
+ /// Types of MonoBehaviours that shall execute before ownType
+ ///
+ /// Whether all SubClasses of each provided type shall also be executed before ownType.
+ /// Defaults to null which is interpreted as true for each given type, thus all SubClasses of given types shall be
+ /// executed before ownType.
+ ///
+ /// Default: true. When true ownType is guaranteed to execute after its BaseType
+ ///
+ /// When types is null or any given type is null or when a given type does not inherit
+ /// from MonoBehaviour
+ ///
+ public ExecuteAfterAttribute(
+ Type ownType,
+ Type[] types,
+ bool[] includingSubClasses = null,
+ bool executeAfterBaseType = true
+ ) : base(
+ DetermineOrder(
+ ownType,
+ types,
+ includingSubClasses,
+ executeAfterBaseType
+ )
+ ) {
+ // nothing
+ }
+
+ private static int DetermineOrder(
+ Type ownType,
+ Type[] types,
+ bool[] includingSubClasses,
+ bool executeAfterBaseType
+ ) {
+ try {
+ CheckArguments(ownType, types, includingSubClasses);
+
+ // return known execution order if own type is already processed
+ if (s_HandledTypes.TryGetValue(ownType, out var dependency)) {
+ return dependency.Order;
+ }
+
+ // add the own type to the processed types
+ dependency = new Dependency();
+ s_HandledTypes.Add(ownType, dependency);
+
+ var typesToDependOn = FindAllDirectAndIndirectDependencies(
+ ownType,
+ types,
+ includingSubClasses,
+ executeAfterBaseType
+ );
+
+ int max = 0;
+ foreach (var type in typesToDependOn) {
+ max = DetermineMaxOrderFromType(ownType, type, dependency, max);
+ }
+
+ // as we want to execute AFTER the found, highest execution order value we increment by 1
+ ++max;
+#if DEBUG_EXECUTION_ORDER
+ Debug.Log($"Setting custom execution order of {ownType.Name} to {max}");
+#endif
+ dependency.Order = max;
+ return max;
+ }
+ catch (Exception e) {
+ // if we don't catch the exception Unity will just close without warning/error
+ Debug.LogException(e);
+
+ // in that case we just return the default execution order value
+ return 0;
+ }
+ }
+
+ private static int DetermineMaxOrderFromType(Type ownType, Type type, Dependency dependency, int max) {
+ if (ownType == type) {
+ // own type is not relevant for execution order determination
+ return max;
+ }
+
+ // add type as dependency for other attributes to look up
+ if (!dependency.ExecuteAfter.Contains(type)) {
+ dependency.ExecuteAfter.Add(type);
+ }
+
+ // process already handled types
+ if (s_HandledTypes.TryGetValue(type, out var othersDependency)) {
+ CheckForCyclicDependency(ownType, othersDependency, type);
+ max = UpdateMax(othersDependency, max);
+
+ return max;
+ }
+
+ // process not yet handled types
+ var customAttributes = type.GetCustomAttributes(true);
+ foreach (var defaultExecutionOrder in customAttributes) {
+ if (s_HandledTypes.TryGetValue(type, out othersDependency)) {
+ CheckForCyclicDependency(ownType, othersDependency, type);
+ max = UpdateMax(othersDependency, max);
+ } else {
+ max = UpdateMax(defaultExecutionOrder, max);
+ }
+ }
+
+ return max;
+ }
+
+ private static int UpdateMax(DefaultExecutionOrder defaultExecutionOrder, int max) {
+ if (defaultExecutionOrder.order > max) {
+ max = defaultExecutionOrder.order;
+ }
+
+ return max;
+ }
+
+ private static int UpdateMax(Dependency othersDependency, int max) {
+ if (othersDependency.Order > max) {
+ max = othersDependency.Order;
+ }
+
+ return max;
+ }
+
+ private static void CheckForCyclicDependency(Type ownType, Dependency othersDependency, Type type) {
+ if (othersDependency.ExecuteAfter.Contains(ownType)) {
+ throw new InvalidConstraintException(
+ $"In {nameof(ExecuteAfterAttribute)}: Cyclic dependency between {ownType.Name} and {type.Name}"
+ );
+ }
+ }
+
+ private static HashSet FindAllDirectAndIndirectDependencies(
+ Type ownType,
+ Type[] types,
+ bool[] includingSubClasses,
+ bool executeAfterBaseType
+ ) {
+ var typesToDependOn = new HashSet();
+ var pending = new HashSet();
+ for (int i = 0; i < types.Length; i++) {
+ AddSpecifiedDependencies(types, includingSubClasses, i, pending);
+ }
+
+ if (executeAfterBaseType) {
+ AddBaseTypeAsDependency(ownType, pending);
+ }
+
+ while (pending.Count > 0) {
+ DetermineAllDirectAndIndirectDependencies(pending, typesToDependOn);
+ }
+
+ return typesToDependOn;
+ }
+
+ private static void DetermineAllDirectAndIndirectDependencies(
+ HashSet pending,
+ HashSet typesToDependOn
+ ) {
+ var first = pending.First();
+ if (s_HandledTypes.TryGetValue(first, out var existingEntry)) {
+ foreach (var type in existingEntry.ExecuteAfter) {
+ if (pending.Contains(type)) {
+ continue;
+ }
+
+ if (typesToDependOn.Contains(type)) {
+ continue;
+ }
+
+ pending.Add(type);
+ }
+ }
+
+ if (!typesToDependOn.Contains(first)) {
+ typesToDependOn.Add(first);
+ }
+
+ pending.Remove(first);
+ }
+
+ private static void AddSpecifiedDependencies(
+ Type[] types,
+ bool[] includingSubClasses,
+ int i,
+ HashSet pending
+ ) {
+ var type = types[i];
+ if (pending.Contains(type)) {
+ return;
+ }
+
+ pending.Add(type);
+
+ bool wantsToIncludeSubTypes = includingSubClasses == null || includingSubClasses[i];
+ if (!wantsToIncludeSubTypes) {
+ return;
+ }
+
+ AddAllRelevantSubClassesOfType(type, pending);
+ }
+
+ private static void AddAllRelevantSubClassesOfType(Type type, HashSet pending) {
+ var subTypes = AppDomain.CurrentDomain.GetAssemblies()
+ .SelectMany(assembly => assembly.GetTypes())
+ .Where(foundType => foundType.IsSubclassOf(type));
+ foreach (var subType in subTypes) {
+ if (pending.Contains(subType)) {
+ // already added
+ continue;
+ }
+
+ pending.Add(subType);
+ }
+ }
+
+ private static void AddBaseTypeAsDependency(Type ownType, HashSet pending) {
+ var type = ownType.BaseType;
+ if (type == null) {
+ return;
+ }
+
+ if (type != typeof(MonoBehaviour) && !type.IsSubclassOf(typeof(MonoBehaviour))) {
+ return;
+ }
+
+ if (pending.Contains(type)) {
+ return;
+ }
+
+ pending.Add(type);
+ }
+
+ private static void CheckArguments(Type ownType, Type[] types, bool[] includingSubClasses) {
+ CheckOwnTypeValidity(ownType);
+ CheckDependencyDimensionValidity(ownType, types, includingSubClasses);
+ CheckDependencyContentValidity(ownType, types);
+ }
+
+ private static void CheckDependencyContentValidity(Type ownType, Type[] types) {
+ foreach (var type in types) {
+ if (type == null) {
+ throw new ArgumentNullException(
+ $"Found on {ownType}: {nameof(types)} contains null"
+ );
+ }
+
+ if (type == typeof(MonoBehaviour)) {
+ continue;
+ }
+
+ if (!type.IsSubclassOf(typeof(MonoBehaviour))) {
+ throw new ArgumentException(
+ $"Found on {ownType}: {nameof(type)} {type.Name} must inherit from {nameof(MonoBehaviour)}"
+ );
+ }
+
+ if (type != ownType) {
+ continue;
+ }
+
+ throw new ArgumentException(
+ $"Found on {nameof(ExecuteAfterAttribute)}: {ownType.Name} can not depend on itself, skipping"
+ );
+ }
+ }
+
+ private static void CheckDependencyDimensionValidity(Type ownType, Type[] types, bool[] includingSubClasses) {
+ if (types == null) {
+ throw new ArgumentNullException($"Found on {ownType}: {nameof(types)} is null");
+ }
+
+ if (includingSubClasses == null) {
+ return;
+ }
+
+ if (types.Length == includingSubClasses.Length) {
+ return;
+ }
+
+ throw new ArgumentException(
+ $"Found on {ownType}: {nameof(includingSubClasses)} must be the same length as {nameof(types)}"
+ );
+ }
+
+ private static void CheckOwnTypeValidity(Type ownType) {
+ if (ownType == null || !ownType.IsSubclassOf(typeof(MonoBehaviour))) {
+ throw new ArgumentException($"{nameof(ownType)} must inherit from {nameof(MonoBehaviour)}");
+ }
+ }
+}
diff --git a/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs.meta b/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs.meta
new file mode 100644
index 0000000..e696669
--- /dev/null
+++ b/Packages/tlp.udonutils/Runtime/Attributes/ExecuteAfter.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: 23d5b5868ec64650a7e61c439b790750
+timeCreated: 1730291004
\ No newline at end of file
diff --git a/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs b/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs
new file mode 100644
index 0000000..2d6a04a
--- /dev/null
+++ b/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs
@@ -0,0 +1,31 @@
+using System;
+using System.Collections.Generic;
+using UnityEngine;
+
+[AttributeUsage(AttributeTargets.Class)]
+public class TlpDefaultExecutionOrder : DefaultExecutionOrder
+{
+ private static readonly Dictionary s_executionOrders = new Dictionary();
+ private static readonly HashSet s_executionOrdersByType = new HashSet();
+
+ private static int s_lowestFailedOrder = int.MaxValue;
+
+ public TlpDefaultExecutionOrder(Type type, int order) : base(order) {
+ if (!s_executionOrdersByType.Add(type)) {
+ Debug.LogWarning($"Type {type} already exists");
+ return;
+ }
+
+ if (s_executionOrders.TryAdd(order, type)) {
+ return;
+ }
+
+ if (order < s_lowestFailedOrder) {
+ s_lowestFailedOrder = order;
+ Debug.LogError($"ExecutionOrder value {order} of {type} is already in use by {s_executionOrders[order]}");
+ return;
+ }
+
+ Debug.LogWarning($"ExecutionOrder value {order} of {type} is already in use by {s_executionOrders[order]}");
+ }
+}
\ No newline at end of file
diff --git a/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs.meta b/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs.meta
new file mode 100644
index 0000000..17959a9
--- /dev/null
+++ b/Packages/tlp.udonutils/Runtime/Attributes/TlpDefaultExecutionOrder.cs.meta
@@ -0,0 +1,3 @@
+fileFormatVersion: 2
+guid: dd401993cfb9478e8d024552403de528
+timeCreated: 1730315851
\ No newline at end of file
diff --git a/Packages/tlp.udonutils/Runtime/Common/Chair.asset b/Packages/tlp.udonutils/Runtime/Common/Chair.asset
index cb5fe6e..bafe7c9 100644
--- a/Packages/tlp.udonutils/Runtime/Common/Chair.asset
+++ b/Packages/tlp.udonutils/Runtime/Common/Chair.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: b5d4634ba97ee0d438c3aeef64212994, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 0
+ behaviourSyncMode: 2
hasInteractEvent: 1
scriptID: -8784024239004747018
serializationData:
diff --git a/Packages/tlp.udonutils/Runtime/Common/Chair.cs b/Packages/tlp.udonutils/Runtime/Common/Chair.cs
index 3f44e97..b7f7386 100644
--- a/Packages/tlp.udonutils/Runtime/Common/Chair.cs
+++ b/Packages/tlp.udonutils/Runtime/Common/Chair.cs
@@ -1,15 +1,24 @@
-using TLP.UdonUtils.Runtime.Events;
+using JetBrains.Annotations;
+using TLP.UdonUtils.Runtime.Events;
using TLP.UdonUtils.Runtime.Extensions;
using TLP.UdonUtils.Runtime.Sync;
+using UdonSharp;
using UnityEngine;
using UnityEngine.Serialization;
using VRC.SDKBase;
namespace TLP.UdonUtils.Runtime.Common
{
- [RequireComponent(typeof(VRC.SDK3.Components.VRCStation))]
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(Chair), ExecutionOrder)]
public class Chair : TlpBaseBehaviour
{
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = ChairProxy.ExecutionOrder + 1;
+
[FormerlySerializedAs("chairProxy")]
[SerializeField]
internal ChairProxy ChairProxy;
@@ -119,7 +128,8 @@ public override void OnStationExited(VRCPlayerApi player) {
return;
}
- if (!Assert(Utilities.IsValid(player), "Player invalid", this)) {
+ if (!Utilities.IsValid(player)) {
+ Error($"{nameof(player)} invalid");
return;
}
@@ -143,7 +153,6 @@ public VRCPlayerApi GetSeatedPlayer() {
}
#endregion
-
#region Local Player Events
private void NotifyLocalPlayerEntered() {
#if TLP_DEBUG
@@ -210,7 +219,6 @@ private void NotifyRemotePlayerExited(VRCPlayerApi player) {
}
#endregion
-
#region Hook Implementations
protected override bool SetupAndValidate() {
if (!base.SetupAndValidate()) return false;
diff --git a/Packages/tlp.udonutils/Runtime/Common/ChairProxy.asset b/Packages/tlp.udonutils/Runtime/Common/ChairProxy.asset
index e422faf..2952dff 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ChairProxy.asset
+++ b/Packages/tlp.udonutils/Runtime/Common/ChairProxy.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: 2a2becbd1e00221419be1d42dddfb1f4, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 0
+ behaviourSyncMode: 2
hasInteractEvent: 0
scriptID: -5584097299232269471
serializationData:
@@ -635,13 +635,13 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
- Data: actualChair
+ Data: ActualChair
- Name: $v
Entry: 7
Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: k__BackingField
Entry: 1
- Data: actualChair
+ Data: ActualChair
- Name: k__BackingField
Entry: 7
Data: 42|System.RuntimeType, mscorlib
@@ -671,10 +671,16 @@ MonoBehaviour:
Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
- Data: 1
+ Data: 2
+ - Name:
+ Entry: 7
+ Data: 44|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
- Name:
Entry: 7
- Data: 44|UnityEngine.SerializeField, UnityEngine.CoreModule
+ Data: 45|UnityEngine.SerializeField, UnityEngine.CoreModule
- Name:
Entry: 8
Data:
diff --git a/Packages/tlp.udonutils/Runtime/Common/ChairProxy.cs b/Packages/tlp.udonutils/Runtime/Common/ChairProxy.cs
index 203606c..9e34f55 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ChairProxy.cs
+++ b/Packages/tlp.udonutils/Runtime/Common/ChairProxy.cs
@@ -1,22 +1,33 @@
using JetBrains.Annotations;
using TLP.UdonUtils.Runtime.Sync;
+using UdonSharp;
using UnityEngine;
+using UnityEngine.Serialization;
using VRC.SDKBase;
namespace TLP.UdonUtils.Runtime.Common
{
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(ChairProxy), ExecutionOrder)]
public class ChairProxy : TlpBaseBehaviour
{
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = TlpAccurateSyncBehaviour.ExecutionOrder + 100;
+
+ [FormerlySerializedAs("actualChair")]
[SerializeField]
- protected Chair actualChair;
+ protected Chair ActualChair;
[PublicAPI]
public virtual bool OnLocalPlayerEntered() {
#if TLP_DEBUG
DebugLog(nameof(OnLocalPlayerEntered));
#endif
-
- if (!Assert(Utilities.IsValid(actualChair), "actualChair invalid", this)) {
+ if (!Utilities.IsValid(ActualChair)) {
+ Error($"{nameof(OnLocalPlayerEntered)}.{nameof(ActualChair)} not set");
return false;
}
@@ -29,12 +40,13 @@ public virtual bool OnLocalPlayerExited() {
#if TLP_DEBUG
DebugLog(nameof(OnLocalPlayerExited));
#endif
- if (!Assert(Utilities.IsValid(actualChair), "actualChair invalid", this)) {
+ if (!Utilities.IsValid(ActualChair)) {
+ Error($"{nameof(OnLocalPlayerExited)}.{nameof(ActualChair)} not set");
return false;
}
var go = gameObject;
- return OwnershipTransfer.TransferOwnershipFrom(go, go, Networking.GetOwner(actualChair.gameObject), true);
+ return OwnershipTransfer.TransferOwnershipFrom(go, go, Networking.GetOwner(ActualChair.gameObject), true);
}
[PublicAPI]
@@ -55,7 +67,7 @@ public virtual bool OnRemotePlayerExited(VRCPlayerApi remotePlayer) {
[PublicAPI]
public VRCPlayerApi GetSeatedPlayer() {
- return Utilities.IsValid(actualChair) ? actualChair.GetSeatedPlayer() : null;
+ return Utilities.IsValid(ActualChair) ? ActualChair.GetSeatedPlayer() : null;
}
}
}
\ No newline at end of file
diff --git a/Packages/tlp.udonutils/Runtime/Common/Comparer.cs b/Packages/tlp.udonutils/Runtime/Common/Comparer.cs
index f8136ca..1fc3685 100644
--- a/Packages/tlp.udonutils/Runtime/Common/Comparer.cs
+++ b/Packages/tlp.udonutils/Runtime/Common/Comparer.cs
@@ -5,9 +5,17 @@
namespace TLP.UdonUtils.Runtime.Common
{
- [UdonBehaviourSyncMode(BehaviourSyncMode.None)]
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(Comparer), ExecutionOrder)]
public abstract class Comparer : TlpBaseBehaviour
{
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = TlpExecutionOrder.TimeSourcesStart + 1;
+
+
[Tooltip("Used when the result of this Comparer object indicates no difference")]
public Comparer optionalFallback;
diff --git a/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.asset b/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.asset
index 994e445..0a175f7 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.asset
+++ b/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: 043c38a532659fc43aad32967db6223e, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 1
+ behaviourSyncMode: 2
hasInteractEvent: 0
scriptID: -6669320385205885359
serializationData:
diff --git a/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.cs b/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.cs
index 509f7ec..9128d47 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.cs
+++ b/Packages/tlp.udonutils/Runtime/Common/ImageDownloader.cs
@@ -1,5 +1,7 @@
using JetBrains.Annotations;
+using TLP.UdonUtils.Runtime.DesignPatterns.MVC;
using TLP.UdonUtils.Runtime.Extensions;
+using TLP.UdonUtils.Runtime.Player;
using UdonSharp;
using UnityEngine;
using UnityEngine.UI;
@@ -11,15 +13,16 @@
namespace TLP.UdonUtils.Runtime.Common
{
[DisallowMultipleComponent]
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
[DefaultExecutionOrder(ExecutionOrder)]
- [UdonBehaviourSyncMode(BehaviourSyncMode.None)]
+ [TlpDefaultExecutionOrder(typeof(ImageDownloader), ExecutionOrder)]
public class ImageDownloader : TlpBaseBehaviour
{
#region Executionorder
protected override int ExecutionOrderReadOnly => ExecutionOrder;
[PublicAPI]
- public new const int ExecutionOrder = TlpExecutionOrder.UiStart + 1;
+ public new const int ExecutionOrder = Controller.ExecutionOrder + 1;
#endregion
[SerializeField]
@@ -329,7 +332,10 @@ private void StartDownload() {
#endif
#endregion
- Assert(Utilities.IsValid(_imageDownloader), $"{nameof(_imageDownloader)} invalid", this);
+ if (!Utilities.IsValid(_imageDownloader)) {
+ Error($"{nameof(_imageDownloader)} invalid");
+ return;
+ }
_imageDownload = _imageDownloader.DownloadImage(
ImageUrls[_currentImageIndex],
diff --git a/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.asset b/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.asset
index 27247fa..5178cca 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.asset
+++ b/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: c07db1ccb93a9854d8e1da1720df755a, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 1
+ behaviourSyncMode: 2
hasInteractEvent: 0
scriptID: -1631318615785128359
serializationData:
@@ -44,25 +44,25 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
- Data: 1
+ Data: 10
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
- Data: prefab
+ Data: AutoRetrySendOnFailure
- Name: $v
Entry: 7
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: k__BackingField
Entry: 1
- Data: prefab
+ Data: AutoRetrySendOnFailure
- Name: k__BackingField
Entry: 7
Data: 3|System.RuntimeType, mscorlib
- Name:
Entry: 1
- Data: UnityEngine.GameObject, UnityEngine.CoreModule
+ Data: System.Boolean, mscorlib
- Name:
Entry: 8
Data:
@@ -84,6 +84,591 @@ MonoBehaviour:
- Name: _fieldAttributes
Entry: 7
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 2
+ - Name:
+ Entry: 7
+ Data: 5|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
+ - Name: header
+ Entry: 1
+ Data: TLP/Networking
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 6|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: If true and a serialization request fails it will automatically try to
+ send again in the next frame until it succeeds. Only applies to owned objects
+ and manual sync.
+ - 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: PauseSynchronization
+ - Name: $v
+ Entry: 7
+ Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PauseSynchronization
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 2
+ - Name:
+ Entry: 7
+ Data: 9|UnityEngine.SerializeField, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 10|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: Has no effect unless implemented by this particular script. See SyncPaused
+ property for details.
+ - 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: Severity
+ - Name: $v
+ Entry: 7
+ Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: Severity
+ - Name: k__BackingField
+ Entry: 7
+ Data: 12|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.Logger.ELogLevel, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: 13|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Int32, mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 3
+ - Name:
+ Entry: 7
+ Data: 15|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
+ - Name: header
+ Entry: 1
+ Data: TLP/Logging
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 16|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 17|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: 'What kind of logs of this behavior shall be produced. Selected severity
+ includes all more severe levels. Example: selecting ''Warning'' also allows
+ ''Error'' and ''Assertion'' messages to appear.
+
+ Note:
+
+ ''Debug''
+ messages are filtered out by default, even when selected. Add the compiler
+ definition ''TLP_DEBUG'' in the Unity player settings to enable them. This
+ should only ever be used for debugging (performance suffers)!'
+ - 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: PendingSerializations
+ - Name: $v
+ Entry: 7
+ Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PendingSerializations
+ - Name: k__BackingField
+ Entry: 9
+ Data: 13
+ - Name: k__BackingField
+ Entry: 9
+ Data: 13
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 19|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: _hadLogger
+ - Name: $v
+ Entry: 7
+ Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: _hadLogger
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 21|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: k__BackingField
+ - Name: $v
+ Entry: 7
+ Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: k__BackingField
+ - Name: k__BackingField
+ Entry: 7
+ Data: 23|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.Logger.TlpLogger, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: 24|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: VRC.Udon.UdonBehaviour, VRC.Udon
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - 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: EventInstigator
+ - Name: $v
+ Entry: 7
+ Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: EventInstigator
+ - Name: k__BackingField
+ Entry: 7
+ Data: 27|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.TlpBaseBehaviour, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 9
+ Data: 24
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 3
+ - Name:
+ Entry: 7
+ Data: 29|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 30|UnityEngine.HideInInspector, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 31|JetBrains.Annotations.PublicAPIAttribute, 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: Pool
+ - Name: $v
+ Entry: 7
+ Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: Pool
+ - Name: k__BackingField
+ Entry: 9
+ Data: 27
+ - Name: k__BackingField
+ Entry: 9
+ Data: 24
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 3
+ - Name:
+ Entry: 7
+ Data: 34|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 35|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 36|UnityEngine.HideInInspector, 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: PoolableInUse
+ - Name: $v
+ Entry: 7
+ Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PoolableInUse
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 2
+ - Name:
+ Entry: 7
+ Data: 39|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 40|UnityEngine.HideInInspector, 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: prefab
+ - Name: $v
+ Entry: 7
+ Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: prefab
+ - Name: k__BackingField
+ Entry: 7
+ Data: 42|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.GameObject, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 9
+ Data: 42
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 43|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
diff --git a/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.cs b/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.cs
index 15c4458..78267a1 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.cs
+++ b/Packages/tlp.udonutils/Runtime/Common/ObjectSpawner.cs
@@ -1,14 +1,25 @@
-using TLP.UdonUtils.Runtime.Player;
+using JetBrains.Annotations;
+using TLP.UdonUtils.Runtime.Player;
+using TLP.UdonUtils.Runtime.Sync;
+using TLP.UdonUtils.Runtime.Sync.SyncedEvents;
using UdonSharp;
using UnityEngine;
using VRC.SDKBase;
namespace TLP.UdonUtils.Runtime.Common
{
- [UdonBehaviourSyncMode(BehaviourSyncMode.None)]
- public class ObjectSpawner : UdonSharpBehaviour
+ [UdonBehaviourSyncMode(BehaviourSyncMode.NoVariableSync)]
+ [DefaultExecutionOrder(ExecutionOrder)]
+ [TlpDefaultExecutionOrder(typeof(ObjectSpawner), ExecutionOrder)]
+ public class ObjectSpawner : TlpBaseBehaviour
{
- public void Start() {
+ protected override int ExecutionOrderReadOnly => ExecutionOrder;
+
+ [PublicAPI]
+ public new const int ExecutionOrder = RoundRobinSynchronizer.ExecutionOrder + 1;
+
+ public override void Start() {
+ base.Start();
int playersCount = VRCPlayerApi.GetPlayerCount();
var players = new VRCPlayerApi[playersCount];
foreach (var vrcPlayerApi in VRCPlayerApi.GetPlayers(players)) {
diff --git a/Packages/tlp.udonutils/Runtime/Common/ToggleObject.asset b/Packages/tlp.udonutils/Runtime/Common/ToggleObject.asset
index 12ca415..b9b74dc 100644
--- a/Packages/tlp.udonutils/Runtime/Common/ToggleObject.asset
+++ b/Packages/tlp.udonutils/Runtime/Common/ToggleObject.asset
@@ -19,7 +19,7 @@ MonoBehaviour:
sourceCsScript: {fileID: 11500000, guid: 808f76e33e4175f48be721050d89cc68, type: 3}
scriptVersion: 2
compiledVersion: 2
- behaviourSyncMode: 0
+ behaviourSyncMode: 2
hasInteractEvent: 1
scriptID: -795238795713000860
serializationData:
@@ -44,25 +44,25 @@ MonoBehaviour:
Data:
- Name:
Entry: 12
- Data: 4
+ Data: 13
- Name:
Entry: 7
Data:
- Name: $k
Entry: 1
- Data: activationSound
+ Data: AutoRetrySendOnFailure
- Name: $v
Entry: 7
Data: 2|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: k__BackingField
Entry: 1
- Data: activationSound
+ Data: AutoRetrySendOnFailure
- Name: k__BackingField
Entry: 7
Data: 3|System.RuntimeType, mscorlib
- Name:
Entry: 1
- Data: UnityEngine.AudioSource, UnityEngine.AudioModule
+ Data: System.Boolean, mscorlib
- Name:
Entry: 8
Data:
@@ -84,6 +84,231 @@ MonoBehaviour:
- Name: _fieldAttributes
Entry: 7
Data: 4|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 2
+ - Name:
+ Entry: 7
+ Data: 5|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
+ - Name: header
+ Entry: 1
+ Data: TLP/Networking
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 6|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: If true and a serialization request fails it will automatically try to
+ send again in the next frame until it succeeds. Only applies to owned objects
+ and manual sync.
+ - 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: PauseSynchronization
+ - Name: $v
+ Entry: 7
+ Data: 7|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PauseSynchronization
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 8|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
+ Data: 2
+ - Name:
+ Entry: 7
+ Data: 9|UnityEngine.SerializeField, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 10|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: Has no effect unless implemented by this particular script. See SyncPaused
+ property for details.
+ - 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: Severity
+ - Name: $v
+ Entry: 7
+ Data: 11|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: Severity
+ - Name: k__BackingField
+ Entry: 7
+ Data: 12|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.Logger.ELogLevel, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: 13|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: System.Int32, mscorlib
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 3
+ - Name:
+ Entry: 7
+ Data: 15|UnityEngine.HeaderAttribute, UnityEngine.CoreModule
+ - Name: header
+ Entry: 1
+ Data: TLP/Logging
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 16|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 17|UnityEngine.TooltipAttribute, UnityEngine.CoreModule
+ - Name: tooltip
+ Entry: 1
+ Data: 'What kind of logs of this behavior shall be produced. Selected severity
+ includes all more severe levels. Example: selecting ''Warning'' also allows
+ ''Error'' and ''Assertion'' messages to appear.
+
+ Note:
+
+ ''Debug''
+ messages are filtered out by default, even when selected. Add the compiler
+ definition ''TLP_DEBUG'' in the Unity player settings to enable them. This
+ should only ever be used for debugging (performance suffers)!'
+ - 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: PendingSerializations
+ - Name: $v
+ Entry: 7
+ Data: 18|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PendingSerializations
+ - Name: k__BackingField
+ Entry: 9
+ Data: 13
+ - Name: k__BackingField
+ Entry: 9
+ Data: 13
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 19|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
- Name:
Entry: 12
Data: 0
@@ -104,19 +329,379 @@ MonoBehaviour:
Data:
- Name: $k
Entry: 1
- Data: deactivationSound
+ Data: _hadLogger
- Name: $v
Entry: 7
- Data: 5|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ Data: 20|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
- Name: k__BackingField
Entry: 1
- Data: deactivationSound
+ Data: _hadLogger
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 21|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: k__BackingField
+ - Name: $v
+ Entry: 7
+ Data: 22|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: k__BackingField
+ - Name: k__BackingField
+ Entry: 7
+ Data: 23|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.Logger.TlpLogger, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: 24|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: VRC.Udon.UdonBehaviour, VRC.Udon
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: false
+ - 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: EventInstigator
+ - Name: $v
+ Entry: 7
+ Data: 26|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: EventInstigator
- Name: k__BackingField
+ Entry: 7
+ Data: 27|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: TLP.UdonUtils.Runtime.TlpBaseBehaviour, TLP.UdonUtils.Runtime
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
Entry: 9
+ Data: 24
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 3
+ - Name:
+ Entry: 7
+ Data: 29|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 30|UnityEngine.HideInInspector, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 31|JetBrains.Annotations.PublicAPIAttribute, 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: Pool
+ - Name: $v
+ Entry: 7
+ Data: 32|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: Pool
+ - Name: k__BackingField
+ Entry: 9
+ Data: 27
- Name: k__BackingField
Entry: 9
+ Data: 24
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 33|System.Collections.Generic.List`1[[System.Attribute, mscorlib]], mscorlib
+ - Name:
+ Entry: 12
Data: 3
+ - Name:
+ Entry: 7
+ Data: 34|UnityEngine.Serialization.FormerlySerializedAsAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 35|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 36|UnityEngine.HideInInspector, 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: PoolableInUse
+ - Name: $v
+ Entry: 7
+ Data: 37|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: PoolableInUse
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 9
+ Data: 3
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: 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: 2
+ - Name:
+ Entry: 7
+ Data: 39|JetBrains.Annotations.PublicAPIAttribute, UnityEngine.CoreModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name:
+ Entry: 7
+ Data: 40|UnityEngine.HideInInspector, 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: activationSound
+ - Name: $v
+ Entry: 7
+ Data: 41|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: activationSound
+ - Name: k__BackingField
+ Entry: 7
+ Data: 42|System.RuntimeType, mscorlib
+ - Name:
+ Entry: 1
+ Data: UnityEngine.AudioSource, UnityEngine.AudioModule
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 9
+ Data: 42
+ - Name: k__BackingField
+ Entry: 7
+ Data: System.Nullable`1[[UdonSharp.UdonSyncMode, UdonSharp.Runtime]], mscorlib
+ - Name:
+ Entry: 6
+ Data:
+ - Name:
+ Entry: 8
+ Data:
+ - Name: k__BackingField
+ Entry: 5
+ Data: true
+ - Name: _fieldAttributes
+ Entry: 7
+ Data: 43|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: deactivationSound
+ - Name: $v
+ Entry: 7
+ Data: 44|UdonSharp.Compiler.FieldDefinition, UdonSharp.Editor
+ - Name: k__BackingField
+ Entry: 1
+ Data: deactivationSound
+ - Name: k__BackingField
+ Entry: 9
+ Data: 42
+ - Name: k__BackingField
+ Entry: 9
+ Data: 42
- Name: