Example #1
0
        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);
        }
Example #2
0
        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);
                }
            });
        }