void Net_OnStateChanged(string newStateName) { if (this.isServer) { return; } StateSyncData newStateData = new StateSyncData() { state = newStateName, additionalData = m_net_additionalStateData }; //Debug.LogFormat("Net_OnStateChanged(): ped {0} changed state to {1}", this.netId, newStateData.state); NumStateChangesReceived++; this.ChangeStateBasedOnSyncData(newStateData); }
void ChangeStateBasedOnSyncData(StateSyncData newStateData) { if (string.IsNullOrEmpty(newStateData.state)) { // don't do anything, this only happens when creating the ped return; } // forcefully change the state F.RunExceptionSafe(() => { var newState = this.States.FirstOrDefault(state => state.GetType().Name == newStateData.state); if (null == newState) { Debug.LogErrorFormat("New ped state '{0}' could not be found", newStateData.state); } else { //Debug.LogFormat("Switching state based on sync data - ped: {0}, state: {1}", this.netId, newState.GetType().Name); byte[] data = string.IsNullOrEmpty(newStateData.additionalData) ? null : System.Convert.FromBase64String(newStateData.additionalData); newState.OnSwitchedStateByServer(data); } }); }