public EventEntry GetEntry (IBehaviourContext character) { if (this.SourceNode == null) return defaultEntry; EventEntry foundEntry; if (ContextCahce == null) ContextCahce = new Dictionary<IBehaviourContext, EventEntry> (); bool result = ContextCahce.TryGetValue (character, out foundEntry); EventOutput sourceOutput = (EventOutput)SourceSocket; EventEntry connectionEntry = sourceOutput.GetEntry (character); if (!result) { foundEntry = new EventEntry (); connectionEntry.OnEventFired += () => { if (foundEntry != null) foundEntry.OnEventFired (); }; ContextCahce.Add (character, foundEntry); } return foundEntry; }