JD2022-TU1/main/extern/Hue/wrappers/csharp/example/HueStreamExampleWPF/Hue.cs

81 lines
2.1 KiB
C#

using System;
using System.IO;
using huestream;
namespace HueStreamExampleWPF
{
/// <summary>
/// Class that implements the HueCallbackHandler from SWIG to handle libhuestream callbacks
/// </summary>
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);
}
/// <summary>
/// ConnectMessage is an event transferred from HueCallbackHandler
/// </summary>
public event EventHandler<ConnectionFlowMessage> 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();
}
}
}