using System; using System.IO; using huestream; namespace HueStreamExampleWPF { /// /// Class that implements the HueCallbackHandler from SWIG to handle libhuestream callbacks /// class Hue : HueCallbackHandler { private readonly string _name; private readonly HueConfig _hueConfig; public Hue(string name) { _name = name; _hueConfig = HueConfig.GetInstance(); } public void InitializeSimulator() { HueConfig.InitializeWithUDP(_name); InitializeCommon(); } public void Initialize() { HueConfig.InitializeDefaultConfig(_name); InitializeCommon(); } private void InitializeCommon() { _hueConfig.SetCallbackHandler(this); } /// /// ConnectMessage is an event transferred from HueCallbackHandler /// public event EventHandler ConnectMessage; public override void NewConnectMessage(ConnectionFlowMessage message) { ConnectMessage?.Invoke(this, message); } public void ConnectCurrent() { HueStream.GetInstance().ConnectBridgeAsync(); } public void ConnectManualIp(string ip) { HueStream.GetInstance().ConnectBridgeManualIpAsync(ip); } public void PlayExplosion() { var effect = new ExplosionEffect("boem", 1); var color = new Color(); color.SetR(1); color.SetG(1); color.SetB(1); color.SetAlpha(1); effect.PrepareEffect(color, 0.5, 500, 500, 2000, 0, 0); HueStream.GetInstance().AddEffect(effect); effect.Enable(); } public void PlayBrightnessSawEffect() { var effect = new BrightnessSawEffect("zaag", 1); effect.PrepareEffect(); HueStream.GetInstance().AddEffect(effect); effect.Enable(); } } }