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);
         }
     }