private void OnStateChange(NetworkState newState, bool force = false, NetworkStateChanges changes = NetworkStateChanges.All) { if (myId == newState.MessageId && !force) { return; } localState.Merge(newState, changes); if (!isServer) // everybody keeps a local copy of the server state in case they become the server { serverState = localState; } if (changes.HasFlag(NetworkStateChanges.Scale)) { MasterController.Instance.DoSetStageScale(localState.StageScale); } if (changes.HasFlag(NetworkStateChanges.Offset)) { MasterController.Instance.DoSetVerticalOffset(localState.StageOffset); } if (changes.HasFlag(NetworkStateChanges.Rotation)) { MasterController.Instance.DoSetStageRotation(localState.StageRotation); } if (changes.HasFlag(NetworkStateChanges.Explode)) { MasterController.Instance.DoSetExplode(localState.Explode); } if (changes.HasFlag(NetworkStateChanges.Asset)) { MasterController.Instance.DoLoadBundle(localState.AssetInfo); } }
void OnSetStateRequestMessage(NetworkMessage netMsg) { var message = netMsg.ReadMessage <NetworkStateMessage>(); NetworkServer.SendToAll(SetStateResponseMsg, message); serverState.Merge(message.State, message.StatesChanged); if (!BypassNetwork) { OnStateChange(message.State, true, message.StatesChanged); } }