diff --git a/MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs b/MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs index d556607457..44b07dee93 100644 --- a/MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs +++ b/MLAPI/MonoBehaviours/Core/NetworkedBehaviour.cs @@ -593,6 +593,7 @@ internal void SyncVarUpdate() FieldTypeHelper.WriteFieldType(writer, syncedVarFields[i].FieldInfo.GetValue(this), syncedVarFields[i].FieldValue); syncedVarFields[i].FieldValue = FieldTypeHelper.GetReferenceArrayValue(syncedVarFields[i].FieldInfo.GetValue(this), syncedVarFields[i].FieldValue); syncedVarFields[i].Dirty = false; + InvokeSyncvarMethodOnServer(syncedVarFields[i].HookMethod); } } List stillDirtyIds = InternalMessageHandler.Send("MLAPI_SYNC_VAR_UPDATE", "MLAPI_INTERNAL", writer, networkId); @@ -628,6 +629,7 @@ internal void SyncVarUpdate() //Only targeted SyncedVars were changed. Thus we need to set them as non dirty here since it wont be done by the next loop. syncedVarFields[i].FieldValue = FieldTypeHelper.GetReferenceArrayValue(syncedVarFields[i].FieldInfo.GetValue(this), syncedVarFields[i].FieldValue); syncedVarFields[i].Dirty = false; + InvokeSyncvarMethodOnServer(syncedVarFields[i].HookMethod); } } } @@ -658,6 +660,7 @@ internal void SyncVarUpdate() FieldTypeHelper.WriteFieldType(writer, syncedVarFields[i].FieldInfo.GetValue(this), syncedVarFields[i].FieldValue); syncedVarFields[i].FieldValue = FieldTypeHelper.GetReferenceArrayValue(syncedVarFields[i].FieldInfo.GetValue(this), syncedVarFields[i].FieldValue); syncedVarFields[i].Dirty = false; + InvokeSyncvarMethodOnServer(syncedVarFields[i].HookMethod); } } List stillDirtyIds = InternalMessageHandler.Send("MLAPI_SYNC_VAR_UPDATE", "MLAPI_INTERNAL", writer, ownerClientId, networkId, null, null); // Send to everyone except target. @@ -670,6 +673,12 @@ internal void SyncVarUpdate() } } + private void InvokeSyncvarMethodOnServer(MethodInfo hookMethod) + { + if (isServer && hookMethod != null) + hookMethod.Invoke(this, null); + } + private bool SetDirtyness() { if (!isServer)