73 lines
1.7 KiB
C#
73 lines
1.7 KiB
C#
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
/// <summary>
|
|
/// Class to manage all webcam stuff inside the SpellingBee minigame
|
|
/// </summary>
|
|
public class JustSignWebcam : MonoBehaviour
|
|
{
|
|
/// <summary>
|
|
/// Index of the current camera
|
|
/// </summary>
|
|
int camdex = 0;
|
|
|
|
/// <summary>
|
|
/// Texture to paste on the display
|
|
/// </summary>
|
|
WebCamTexture tex;
|
|
|
|
/// <summary>
|
|
/// Display for the video feed
|
|
/// </summary>
|
|
public RawImage display;
|
|
|
|
/// <summary>
|
|
/// Setup the webcam correctly
|
|
/// </summary>
|
|
void Awake()
|
|
{
|
|
WebCamDevice device = WebCamTexture.devices[camdex];
|
|
tex = new WebCamTexture(device.name);
|
|
display.texture = tex;
|
|
|
|
tex.Play();
|
|
}
|
|
|
|
/// <summary>
|
|
/// Swap webcam by cycling through the `WebCamTexture.devices` list
|
|
/// </summary>
|
|
public void SwapCam()
|
|
{
|
|
if (WebCamTexture.devices.Length > 0)
|
|
{
|
|
// Stop the old camera
|
|
display.texture = null;
|
|
tex.Stop();
|
|
tex = null;
|
|
|
|
// Find the new camera
|
|
camdex += 1;
|
|
camdex %= WebCamTexture.devices.Length;
|
|
|
|
// Start the new camera
|
|
WebCamDevice device = WebCamTexture.devices[camdex];
|
|
tex = new WebCamTexture(device.name);
|
|
display.texture = tex;
|
|
|
|
tex.Play();
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// Scene changing is implemented here to avoid problems with webcam
|
|
/// </summary>
|
|
public void GotoThemeSelection()
|
|
{
|
|
display.texture = null;
|
|
tex.Stop();
|
|
tex = null;
|
|
|
|
SystemController.GetInstance().BackToPreviousScene();
|
|
}
|
|
}
|