public void OnReplayDeserialize(ReplayState state) { // Read the object identity objectIdentity = state.ReadIdentity(); timestamp = state.ReadFloat(); // Read the flags flags = (ReplayInitialDataFlags)state.Read16(); // Read position if ((flags & ReplayInitialDataFlags.Position) != 0) { position = state.ReadVec3(); } // Read rotation if ((flags & ReplayInitialDataFlags.Rotation) != 0) { rotation = state.ReadQuat(); } // Read scale if ((flags & ReplayInitialDataFlags.Scale) != 0) { scale = state.ReadVec3(); } // Read parent identity if ((flags & ReplayInitialDataFlags.Parent) != 0) { parentIdentity = state.ReadIdentity(); } // Read the number of observed components int size = state.Read16(); // Allocate the array observedComponentIdentities = new ReplayIdentity[size]; // Read all ids for (int i = 0; i < size; i++) { // Read the identity observedComponentIdentities[i] = state.ReadIdentity(); } }
/// <summary> /// Called by the replay system when this <see cref="ReplaySnapshot"/> should be deserialized. /// </summary> /// <param name="state">The <see cref="ReplayState"/> to read the data from</param> public void OnReplayDeserialize(ReplayState state) { timeStamp = state.ReadFloat(); // Read states size int size = state.Read32(); // Read all states for (int i = 0; i < size; i++) { // Read the identity ReplayIdentity identity = state.ReadIdentity(); // Read size short stateSize = state.Read16(); // Read the state data ReplayState stateData = state.ReadState(stateSize); // Add to states states.Add(identity, stateData); } }