public void OnStreamEvent(SyncedData <TModel> stream, StreamEvent streamEvent) { if (streamEvent == StreamEvent.Added) { var obj = Import(stream); if (m_MemTracker.ContainsKey(m_ObjectHandle, stream.key)) { Debug.Log("Duplicate " + obj.name); } m_MemTracker.Set(m_ObjectHandle, stream.key, obj); m_Output.SendStreamAdded(new SyncedData <TObject>(stream.key, obj)); } else if (streamEvent == StreamEvent.Changed) { if (m_MemTracker.TryGetValue(m_ObjectHandle, stream.key, out var obj)) { ReImport(stream, obj); } else { // We may receive "Changed" for items that were // loaded at some point, but are not in the cache anymore obj = Import(stream); m_MemTracker.Set(m_ObjectHandle, stream.key, obj); } m_Output.SendStreamChanged(new SyncedData <TObject>(stream.key, obj)); } }