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!"); } }
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); }
protected abstract void HandleUpdateSyncVarMessage(UpdateSyncVarMessage updateSyncVarMessage);