public override void Deserialize(NetworkReader reader) { StatesChanged = (NetworkStateChanges)reader.ReadInt16(); State = new NetworkState(); State.MessageId = reader.ReadInt32(); if (StatesChanged.HasFlag(NetworkStateChanges.Scale)) { State.StageScale = reader.ReadSingle(); } if (StatesChanged.HasFlag(NetworkStateChanges.Offset)) { State.StageOffset = reader.ReadSingle(); } if (StatesChanged.HasFlag(NetworkStateChanges.Explode)) { State.Explode = reader.ReadBoolean(); } if (StatesChanged.HasFlag(NetworkStateChanges.Rotation)) { State.StageRotation = reader.ReadSingle(); } if (StatesChanged.HasFlag(NetworkStateChanges.Asset)) { State.AssetInfo = AssetInfo.Deserialize(reader); } }
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); } }
private void SendStateToServer(NetworkState state, NetworkStateChanges changes = NetworkStateChanges.All) { state.MessageId = myId; if (BypassNetwork || NetworkManager.singleton == null || NetworkManager.singleton.client == null) { OnStateChange(state, true, changes); } else { NetworkManager.singleton.client.Send(SetStateRequestMsg, new NetworkStateMessage(state, changes)); if (!isServer) { OnStateChange(state, true, changes); } } }
public void Merge(NetworkState other, NetworkStateChanges changes) { MessageId = other.MessageId; if (changes.HasFlag(NetworkStateChanges.Scale)) { StageScale = other.StageScale; } if (changes.HasFlag(NetworkStateChanges.Offset)) { StageOffset = other.StageOffset; } if (changes.HasFlag(NetworkStateChanges.Rotation)) { StageRotation = other.StageRotation; } if (changes.HasFlag(NetworkStateChanges.Explode)) { Explode = other.Explode; } if (changes.HasFlag(NetworkStateChanges.Asset)) { AssetInfo = other.AssetInfo; } }
public NetworkStateMessage(NetworkState state, NetworkStateChanges changes = NetworkStateChanges.All) { State = state; StatesChanged = changes; }