示例#1
0
        protected override void HandleUpdateSyncVarMessage(UpdateSyncVarMessage updateSyncVarMessage)
        {
            _logger.Debug("Received Update Sync Var Message");
            GameObject toBeUpdated = _networkManager.GetGameObjectById(updateSyncVarMessage.entityId)?.gameObject;

            if (toBeUpdated == null)
            {
                throw new Exception("Could not find Network Object with id: " + updateSyncVarMessage.entityId + " to update sync vars");
            }

            NetworkMonoBehaviour networkMonoBehaviour;

            if (toBeUpdated.TryGetComponent(out networkMonoBehaviour))
            {
                networkMonoBehaviour.UpdateSyncVars(updateSyncVarMessage.data);
            }
            else
            {
                throw new Exception("The GameObject with network id: " + updateSyncVarMessage.entityId + " has no NetworkMonoBehaviour Script on it!");
            }
        }
示例#2
0
 private void UpdateSyncVars()
 {
     FieldInfo[] objectFields = this.GetType().GetFields(BindingFlags.Instance | BindingFlags.Public);
     for (int i = 0; i < objectFields.Length; i++)
     {
         SyncVar attribute = Attribute.GetCustomAttribute(objectFields[i], typeof(SyncVar)) as SyncVar;
         if (attribute != null)
         {
             List <UpdateSyncVarMessage.SyncVarData> changes = new List <UpdateSyncVarMessage.SyncVarData>();
             if (_syncVars.ContainsKey(objectFields[i].Name) &&
                 !_syncVars[objectFields[i].Name].Equals(objectFields[i].GetValue(this)))
             {
                 _syncVars[objectFields[i].Name] = objectFields[i].GetValue(this);
                 changes.Add(new UpdateSyncVarMessage.SyncVarData(objectFields[i].Name, objectFields[i].GetValue(this)));
             }
             if (changes.Count > 0)
             {
                 UpdateSyncVarMessage msg = new UpdateSyncVarMessage(changes.ToArray(), this.entityId);
                 NetworkManager.Instance.TcpSendToServer(msg);
             }
         }
     }
 }
 protected override void HandleUpdateSyncVarMessage(UpdateSyncVarMessage updateSyncVarMessage)
 {
     _logger.Debug("Handling Update Sync Var Message with: " + updateSyncVarMessage.data.Length + " changes");
     _networkManager.TcpServerSendBroadcast(updateSyncVarMessage, updateSyncVarMessage.playerInfo.userId);
 }
示例#4
0
 protected abstract void HandleUpdateSyncVarMessage(UpdateSyncVarMessage updateSyncVarMessage);