public void SetCustomProperties(Hashtable propertiesToSet, Hashtable expectedValues = null, bool webForward = false)
{
if (propertiesToSet == null)
{
return;
}
Hashtable hashtable = propertiesToSet.StripToStringKeys();
Hashtable hashtable2 = expectedValues.StripToStringKeys();
bool flag = hashtable2 == null || hashtable2.get_Count() == 0;
bool flag2 = this.actorID > 0 && !PhotonNetwork.offlineMode;
if (flag)
{
this.CustomProperties.Merge(hashtable);
this.CustomProperties.StripKeysWithNullValues();
}
if (flag2)
{
PhotonNetwork.networkingPeer.OpSetPropertiesOfActor(this.actorID, hashtable, hashtable2, webForward);
}
if (!flag2 || flag)
{
this.InternalCacheProperties(hashtable);
NetworkingPeer.SendMonoMessage(PhotonNetworkingMessage.OnPhotonPlayerPropertiesChanged, new object[]
{
this,
hashtable
});
}
}