Copying and Pasting cs Code
In cs, like in almost any computer programming language, reading data from a file can be tricky. You add extra lines of code to tell the computer what to do. Sometimes you can copy and paste these lines from other peoples’ code.
For example, you can follow the pattern in this listing: public void RunViewUpdate()
{
if (!PhotonNetwork.connected || PhotonNetwork.offlineMode)
{
return;
}
if (this.mActors == null ||
#if !PHOTON_DEVELOP
this.mActors.Count <= 1
#endif
)
{
return; // No need to send OnSerialize messages (these are never buffered anyway)
}
dataPerGroupReliable.Clear();
dataPerGroupUnreliable.Clear();
/* Format of the data hashtable:
* Hasthable dataPergroup*
* [(byte)0] = this.ServerTimeInMilliSeconds;
* OPTIONAL: [(byte)1] = currentLevelPrefix;
* + data
*/
foreach (KeyValuePair kvp in this.photonViewList)
{
PhotonView view = kvp.Value;
if (view.synchronization != ViewSynchronization.Off)
{
// Fetch all sending photonViews
if (view.isMine)
{
#if UNITY_2_6_1 || UNITY_2_6 || UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5
if (!view.gameObject.active)
{
continue; // Only on actives
}
#else
if (!view.gameObject.activeInHierarchy)
{
continue; // Only on actives
}
#endif
if (this.blockSendingGroups.Contains(view.group))
{
continue; // Block sending on this group
}
// Run it trough its OnSerialize
Hashtable evData = this.OnSerializeWrite(view);
if (evData == null)
{
continue;
}
if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed || view.mixedModeIsReliable)
{
if (!evData.ContainsKey((byte)1) && !evData.ContainsKey((byte)2))
{
// Everything has been removed by compression, nothing to send
}
else
{
if (!dataPerGroupReliable.ContainsKey(view.group))
{
dataPerGroupReliable[view.group] = new Hashtable();
dataPerGroupReliable[view.group][(byte)0] = this.ServerTimeInMilliSeconds;
if (currentLevelPrefix >= 0)
{
dataPerGroupReliable[view.group][(byte)1] = this.currentLevelPrefix;
}
}
Hashtable groupHashtable = dataPerGroupReliable[view.group];
groupHashtable.Add((short)groupHashtable.Count, evData);
}
}
else
{
if (!dataPerGroupUnreliable.ContainsKey(view.group))
{
dataPerGroupUnreliable[view.group] = new Hashtable();
dataPerGroupUnreliable[view.group][(byte)0] = this.ServerTimeInMilliSeconds;
if (currentLevelPrefix >= 0)
{
dataPerGroupUnreliable[view.group][(byte)1] = this.currentLevelPrefix;
}
}
Hashtable groupHashtable = dataPerGroupUnreliable[view.group];
groupHashtable.Add((short)groupHashtable.Count, evData);
}
}
else
{
// Debug.Log(" NO OBS on " + view.name + " " + view.owner);
}
}
else
{
}
}
//Send the messages: every group is send in it's own message and unreliable and reliable are split as well
RaiseEventOptions options = new RaiseEventOptions();
#if PHOTON_DEVELOP
options.Receivers = ReceiverGroup.All;
#endif
foreach (KeyValuePair kvp in dataPerGroupReliable)
{
options.InterestGroup = (byte)kvp.Key;
this.OpRaiseEvent(PunEvent.SendSerializeReliable, kvp.Value, true, options);
}
foreach (KeyValuePair kvp in dataPerGroupUnreliable)
{
options.InterestGroup = (byte)kvp.Key;
this.OpRaiseEvent(PunEvent.SendSerialize, kvp.Value, false, options);
}
}
{
if (!PhotonNetwork.connected || PhotonNetwork.offlineMode)
{
return;
}
if (this.mActors == null ||
#if !PHOTON_DEVELOP
this.mActors.Count <= 1
#endif
)
{
return; // No need to send OnSerialize messages (these are never buffered anyway)
}
dataPerGroupReliable.Clear();
dataPerGroupUnreliable.Clear();
/* Format of the data hashtable:
* Hasthable dataPergroup*
* [(byte)0] = this.ServerTimeInMilliSeconds;
* OPTIONAL: [(byte)1] = currentLevelPrefix;
* + data
*/
foreach (KeyValuePair
{
PhotonView view = kvp.Value;
if (view.synchronization != ViewSynchronization.Off)
{
// Fetch all sending photonViews
if (view.isMine)
{
#if UNITY_2_6_1 || UNITY_2_6 || UNITY_3_0 || UNITY_3_0_0 || UNITY_3_1 || UNITY_3_2 || UNITY_3_3 || UNITY_3_4 || UNITY_3_5
if (!view.gameObject.active)
{
continue; // Only on actives
}
#else
if (!view.gameObject.activeInHierarchy)
{
continue; // Only on actives
}
#endif
if (this.blockSendingGroups.Contains(view.group))
{
continue; // Block sending on this group
}
// Run it trough its OnSerialize
Hashtable evData = this.OnSerializeWrite(view);
if (evData == null)
{
continue;
}
if (view.synchronization == ViewSynchronization.ReliableDeltaCompressed || view.mixedModeIsReliable)
{
if (!evData.ContainsKey((byte)1) && !evData.ContainsKey((byte)2))
{
// Everything has been removed by compression, nothing to send
}
else
{
if (!dataPerGroupReliable.ContainsKey(view.group))
{
dataPerGroupReliable[view.group] = new Hashtable();
dataPerGroupReliable[view.group][(byte)0] = this.ServerTimeInMilliSeconds;
if (currentLevelPrefix >= 0)
{
dataPerGroupReliable[view.group][(byte)1] = this.currentLevelPrefix;
}
}
Hashtable groupHashtable = dataPerGroupReliable[view.group];
groupHashtable.Add((short)groupHashtable.Count, evData);
}
}
else
{
if (!dataPerGroupUnreliable.ContainsKey(view.group))
{
dataPerGroupUnreliable[view.group] = new Hashtable();
dataPerGroupUnreliable[view.group][(byte)0] = this.ServerTimeInMilliSeconds;
if (currentLevelPrefix >= 0)
{
dataPerGroupUnreliable[view.group][(byte)1] = this.currentLevelPrefix;
}
}
Hashtable groupHashtable = dataPerGroupUnreliable[view.group];
groupHashtable.Add((short)groupHashtable.Count, evData);
}
}
else
{
// Debug.Log(" NO OBS on " + view.name + " " + view.owner);
}
}
else
{
}
}
//Send the messages: every group is send in it's own message and unreliable and reliable are split as well
RaiseEventOptions options = new RaiseEventOptions();
#if PHOTON_DEVELOP
options.Receivers = ReceiverGroup.All;
#endif
foreach (KeyValuePair
{
options.InterestGroup = (byte)kvp.Key;
this.OpRaiseEvent(PunEvent.SendSerializeReliable, kvp.Value, true, options);
}
foreach (KeyValuePair
{
options.InterestGroup = (byte)kvp.Key;
this.OpRaiseEvent(PunEvent.SendSerialize, kvp.Value, false, options);
}
}