81 lines
2.1 KiB
C#
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();
|
|
|
|
}
|
|
}
|
|
}
|