public override bool Sync() { IsChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate(); if (IsChanged) { Length = FNodeIn.SliceCount; using (var writer = GetWriter()) { object usI; FNodeIn.GetUpstreamInterface(out usI); var upstreamInterface = usI as IGenericIO; for (int i = 0; i < Length; i++) { int usS; T result = new T(); if (upstreamInterface != null) { FNodeIn.GetUpsreamSlice(i, out usS); IDX11ResourceDataProvider res = (IDX11ResourceDataProvider)upstreamInterface.GetSlice(usS); if (result == null) { res = new T(); } result.Assign(res); } writer.Write(result); } } } return(base.Sync()); }
//called when data for any output pin is requested public void Evaluate(int spreadMax) { object myData; FX.GetUpstreamInterface(out myData); if (myData == null) { return; } int upSlice; FX.GetUpsreamSlice(0, out upSlice); var myValueData = myData as IValueData; if (myValueData != null) { double x; myValueData.GetValue(upSlice, out x); FValueOut[0] = x; } var myColorData = myData as IColorData; if (myColorData != null) { RGBAColor x; myColorData.GetColor(upSlice, out x); FColorOut[0] = x; } }
public override bool Sync() { IsChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate(); if (IsChanged) { Length = FNodeIn.SliceCount; using (var writer = GetWriter()) { object usI; FNodeIn.GetUpstreamInterface(out usI); var upstreamInterface = usI as IGenericIO; for (int i = 0; i < Length; i++) { int usS; var result = default(T); if (upstreamInterface != null) { FNodeIn.GetUpsreamSlice(i, out usS); result = (T)upstreamInterface.GetSlice(usS); } writer.Write(result); } } } return(base.Sync()); }
public override bool Sync() { var nodeConnectionChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate(); if (nodeConnectionChanged) { Length = FNodeIn.SliceCount; FSubscriptions.ResizeAndDispose( Length, slice => { return(new Subscription <Keyboard, KeyNotification>( keyboard => keyboard.KeyNotifications, (keyboard, n) => { var keyboardState = this.Buffer[slice]; IEnumerable <Keys> keys; switch (n.Kind) { case KeyNotificationKind.KeyDown: var downNotification = n as KeyDownNotification; keys = keyboardState.KeyCodes.Concat(new [] { downNotification.KeyCode }); keyboardState = new KeyboardState(keys, keyboard.CapsLock, keyboardState.Time + 1); break; case KeyNotificationKind.KeyUp: var upNotification = n as KeyUpNotification; keys = keyboardState.KeyCodes.Except(new[] { upNotification.KeyCode }); keyboardState = new KeyboardState(keys, keyboardState.CapsLock, keyboardState.Time + 1); break; } SetKeyboardState(slice, keyboardState); } )); } ); object usI; FNodeIn.GetUpstreamInterface(out usI); var stream = usI as MemoryIOStream <Keyboard>; for (int i = 0; i < Length; i++) { int usS; var keyboard = Keyboard.Empty; if (stream != null) { FNodeIn.GetUpsreamSlice(i, out usS); keyboard = stream[usS]; } if (FSubscriptions[i].Update(keyboard)) { SetKeyboardState(i, KeyboardState.Empty); } } } return(base.Sync()); }
public override bool Sync() { IsChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate(); if (IsChanged) { Length = FNodeIn.SliceCount; FSubscriptions.ResizeAndDispose( Length, slice => { return(new Subscription <Keyboard, KeyNotification>( keyboard => keyboard.KeyNotifications, (keyboard, n) => { var keyboardState = this.Buffer[slice]; IEnumerable <Keys> keys; switch (n.Kind) { case KeyNotificationKind.KeyDown: var downNotification = n as KeyDownNotification; keys = keyboardState.KeyCodes.Concat(new [] { downNotification.KeyCode }); keyboardState = new KeyboardState(keys, keyboard.CapsLock, keyboardState.Time + 1); break; case KeyNotificationKind.KeyUp: var upNotification = n as KeyUpNotification; keys = keyboardState.KeyCodes.Except(new[] { upNotification.KeyCode }); keyboardState = new KeyboardState(keys, keyboardState.CapsLock, keyboardState.Time + 1); break; } this.Buffer[slice] = keyboardState; } )); } ); using (var writer = GetWriter()) { object usI; FNodeIn.GetUpstreamInterface(out usI); var upstreamInterface = usI as IGenericIO; for (int i = 0; i < Length; i++) { int usS; var keyboard = Keyboard.Empty; if (upstreamInterface != null) { FNodeIn.GetUpsreamSlice(i, out usS); keyboard = (Keyboard)upstreamInterface.GetSlice(usS); } writer.Write(KeyboardState.Empty); FSubscriptions[i].Update(keyboard); } } } return(base.Sync()); }
ISpread <T> GetGenericSpread <T>(object upData) { var upStream = upData as IInStream <T>; if (upStream != null) { var currentSpread = new Spread <T>(NodeIn.SliceCount); var upperSpread = upStream.ToSpread(); for (int i = 0; i < NodeIn.SliceCount; i++) { int upSlice; NodeIn.GetUpsreamSlice(i, out upSlice); currentSpread[i] = (T)((object)upperSpread[upSlice]); } return(currentSpread); } return(null); }
public object this[int i] { get { if (Connected) { object usi = GetUpstreamInterface(); int ui; Pin.GetUpsreamSlice(i, out ui); if (usi is IValueData) { var temp = usi as IValueData; double t; temp.GetValue(ui, out t); return(t); } if (usi is IColorData) { var temp = usi as IColorData; RGBAColor t; temp.GetColor(ui, out t); return(t); } if (usi is IStringData) { var temp = usi as IStringData; string t; temp.GetString(ui, out t); return(t); } if (usi is IRawData) { var temp = usi as IRawData; IStream t; temp.GetData(ui, out t); return(t); } if (usi is IEnumerable <object> ) { var temp = usi as IEnumerable <object>; return(temp.ToArray()[ui]); } return(null); } else { return(null); } } }
public override bool Sync() { var nodeConnectionChanged = FAutoValidate ? FNodeIn.PinIsChanged : FNodeIn.Validate(); if (nodeConnectionChanged) { Length = FNodeIn.SliceCount; FRawMouseWheels.SliceCount = Length; FSubscriptions.ResizeAndDispose( Length, slice => { return(new Subscription <Mouse, MouseNotification>( mouse => mouse.MouseNotifications, (mouse, n) => { var position = new Vector2D(n.Position.X, n.Position.Y); var clientArea = new Vector2D(n.ClientArea.Width - 1, n.ClientArea.Height - 1); var normalizedPosition = VMath.Map(position, Vector2D.Zero, clientArea, new Vector2D(-1, 1), new Vector2D(1, -1), TMapMode.Float); var mouseState = this.Buffer[slice]; switch (n.Kind) { case MouseNotificationKind.MouseDown: var downNotification = n as MouseButtonNotification; mouseState = new MouseState(normalizedPosition.x, normalizedPosition.y, mouseState.Buttons | downNotification.Buttons, mouseState.MouseWheel); break; case MouseNotificationKind.MouseUp: var upNotification = n as MouseButtonNotification; mouseState = new MouseState(normalizedPosition.x, normalizedPosition.y, mouseState.Buttons & ~upNotification.Buttons, mouseState.MouseWheel); break; case MouseNotificationKind.MouseMove: mouseState = new MouseState(normalizedPosition.x, normalizedPosition.y, mouseState.Buttons, mouseState.MouseWheel); break; case MouseNotificationKind.MouseWheel: var wheelNotification = n as MouseWheelNotification; FRawMouseWheels[slice] += wheelNotification.WheelDelta; var wheel = (int)Math.Round((float)FRawMouseWheels[slice] / Const.WHEEL_DELTA); mouseState = new MouseState(normalizedPosition.x, normalizedPosition.y, mouseState.Buttons, wheel); break; } SetMouseState(slice, ref mouseState); } )); } ); object usI; FNodeIn.GetUpstreamInterface(out usI); var upstreamInterface = usI as IGenericIO; var emptyMouseState = new MouseState(); for (int i = 0; i < Length; i++) { int usS; var mouse = Mouse.Empty; if (upstreamInterface != null) { FNodeIn.GetUpsreamSlice(i, out usS); mouse = (Mouse)upstreamInterface.GetSlice(usS); } SetMouseState(i, ref emptyMouseState); FSubscriptions[i].Update(mouse); } } return(base.Sync()); }
//called when data for any output pin is requested public void Evaluate(int spreadMax) { object myData; FX.GetUpstreamInterface(out myData); if (myData == null) { FOutput[0] = "not connected"; return; } int upSlice; FX.GetUpsreamSlice(0, out upSlice); var myValueData = myData as IValueData; if (myValueData != null) { double x; myValueData.GetValue(upSlice, out x); FOutput[0] = "value: " + x.ToString(); FValueOut[0] = x; return; } var myStringData = myData as IStringData; if (myStringData != null) { string x; myStringData.GetString(upSlice, out x); FOutput[0] = "string: " + x.ToString(); return; } var myColorData = myData as IColorData; if (myColorData != null) { RGBAColor x; myColorData.GetColor(upSlice, out x); FOutput[0] = "color: " + x.ToString(); FColorOut[0] = x; return; } var myRawData = myData as IRawData; if (myRawData != null) { IStream x; myRawData.GetData(upSlice, out x); FOutput[0] = "raw: " + x.ToString(); return; } var myFooData = myData as IEnumerable <object>; if (myFooData != null && myFooData.Any()) { var spread = myFooData.ToSpread(); FOutput[0] = spread[upSlice].ToString(); return; } FLogger.Log(LogType.Debug, myData.ToString()); FOutput[0] = "unknown data"; }
public List <object> this[int i] { get { if (Connected) { object usi = GetUpstreamInterface(); double btemp = 0; BinSizePin.GetValue(i, out btemp); int currbin = (int)btemp; int curroffs = ConstructBinOffsets()[i]; if (currbin < 0) { currbin = BinSizePin.SliceCount; curroffs = 0; } List <object> res = new List <object>(); for (int j = 0; j < currbin; j++) { int ui; Pin.GetUpsreamSlice(curroffs + j, out ui); if (usi is IValueData) { var temp = usi as IValueData; double t; temp.GetValue(ui, out t); res.Add(t); break; } if (usi is IColorData) { var temp = usi as IColorData; RGBAColor t; temp.GetColor(ui, out t); res.Add(t); break; } if (usi is IStringData) { var temp = usi as IStringData; string t; temp.GetString(ui, out t); res.Add(t); break; } if (usi is IRawData) { var temp = usi as IRawData; IStream t; temp.GetData(ui, out t); res.Add(t); break; } if (usi is IEnumerable <object> ) { var temp = usi as IEnumerable <object>; res.Add(temp.ToArray()[ui]); break; } res.Add(null); } return(res); } else { return(null); } } }