private NuiSource()
{
context = new Context("openni.xml");
// Initialise generators
imageGenerator = this.context.FindExistingNode(NodeType.Image) as ImageGenerator;
depthGenerator = this.context.FindExistingNode(NodeType.Depth) as DepthGenerator;
imageMetadata = new ImageMetaData();
var imageMapMode = imageGenerator.GetMapOutputMode();
depthMetadata = new DepthMetaData();
var depthMapMode = depthGenerator.GetMapOutputMode();
depthHistogram = new int[depthGenerator.GetDeviceMaxDepth()];
// Initialise bitmaps
cameraImage = new WriteableBitmap((int)imageMapMode.nXRes, (int)imageMapMode.nYRes, 96, 96, PixelFormats.Rgb24, null);
depthImage = new WriteableBitmap((int)depthMapMode.nXRes, (int)depthMapMode.nYRes, 96, 96, PixelFormats.Rgb24, null);
// Initialise background thread
var cameraThread = new Thread(this.CameraThread) { IsBackground = true };
cameraThread.Start();
var userGenerator = new UserGenerator(context);
userGenerator.NewUser += this.UserGenerator_NewUser;
userGenerator.LostUser += this.UserGenerator_LostUser;
}