public void DetachAllSigEventHandlers() { BooleanOutput.Where(bo => bo.UserObject is UnifiedSigUserObject).ToList().ForEach(bo => bo.UserObject = ((UnifiedSigUserObject)bo.UserObject).UserObject); UShortOutput.Where(uo => uo.UserObject is UnifiedSigUserObject).ToList().ForEach(uo => uo.UserObject = ((UnifiedSigUserObject)uo.UserObject).UserObject); StringOutput.Where(so => so.UserObject is UnifiedSigUserObject).ToList().ForEach(so => so.UserObject = ((UnifiedSigUserObject)so.UserObject).UserObject); UShortInput.Where(ui => ui.UserObject is UnifiedSigUserObject).ToList().ForEach(ui => ui.UserObject = ((UnifiedSigUserObject)ui.UserObject).UserObject); }
private void OnSigChange(SigEventArgs args) { UnifiedSigEventArgs usea = new UnifiedSigEventArgs(args); switch (args.Event) { case eSigEvent.BoolOutputSigsCleared: BooleanOutput.Where(bo => bo.UserObject is UnifiedSigUserObject && ((UnifiedSigUserObject)bo.UserObject).UnifiedSigEvents != null).Select(bo => ((UnifiedSigUserObject)bo.UserObject).UnifiedSigEvents).ToList().ForEach(lc => lc.FindAll(u => u.SigChange != null && (u.eSigEvent == eSigEvent.NA || u.eSigEvent == eSigEvent.BoolChange)).ForEach(u => u.SigChange(this, usea))); break; case eSigEvent.UShortOutputSigsCleared: UShortOutput.Where(uo => uo.UserObject is UnifiedSigUserObject && ((UnifiedSigUserObject)uo.UserObject).UnifiedSigEvents != null).Select(uo => ((UnifiedSigUserObject)uo.UserObject).UnifiedSigEvents).ToList().ForEach(lc => lc.FindAll(u => u.SigChange != null && (u.eSigEvent == eSigEvent.NA || u.eSigEvent == eSigEvent.UShortChange)).ForEach(u => u.SigChange(this, usea))); break; case eSigEvent.StringOutputSigsCleared: StringOutput.Where(so => so.UserObject is UnifiedSigUserObject && ((UnifiedSigUserObject)so.UserObject).UnifiedSigEvents != null).Select(so => ((UnifiedSigUserObject)so.UserObject).UnifiedSigEvents).ToList().ForEach(lc => lc.FindAll(u => u.SigChange != null && (u.eSigEvent == eSigEvent.NA || u.eSigEvent == eSigEvent.StringChange)).ForEach(u => u.SigChange(this, usea))); break; default: var uuo = args.Sig.UserObject as UnifiedSigUserObject; if (uuo == null) { return; } if (uuo.UnifiedSigEvents == null || uuo.UnifiedSigEvents.Count == 0) { args.Sig.UserObject = uuo.UserObject; return; } switch (args.Sig.Type) { case eSigType.Bool: usea.BoolValue = args.Sig.BoolValue; break; case eSigType.UShort: usea.UShortValue = args.Sig.UShortValue; break; case eSigType.String: usea.StringValue = args.Sig.StringValue; break; } uuo.UnifiedSigEvents.FindAll(u => u.SigChange != null && (u.eSigEvent == eSigEvent.NA || u.eSigEvent == args.Event)).ForEach(u => u.SigChange(this, usea)); break; } }