92 lines
2.5 KiB
C#
92 lines
2.5 KiB
C#
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using UnityEngine.Video;
|
|
|
|
public class PanelWithVideoAndImage : MonoBehaviour
|
|
{
|
|
public GameObject feedbackProgressObject;
|
|
public GameObject previewMessage;
|
|
public bool isPreview;
|
|
|
|
public Sprite playSprite;
|
|
public Sprite pauseSprite;
|
|
|
|
/// <summary>
|
|
/// Reference to instructional video player
|
|
/// </summary>
|
|
public VideoPlayer videoPlayer;
|
|
public Image playButton;
|
|
public RawImage webcamScreen;
|
|
|
|
/// <summary>
|
|
/// Reference to the image for displaying the current words sprite
|
|
/// </summary>
|
|
public Transform signImageContainer;
|
|
|
|
public GameObject signImagePrefab;
|
|
|
|
/// <summary>
|
|
/// Reference to the feedback field
|
|
/// </summary>
|
|
public TMP_Text feedbackText;
|
|
|
|
/// <summary>
|
|
/// Reference to the progress bar
|
|
/// </summary>
|
|
public Slider feedbackProgressBar;
|
|
|
|
/// <summary>
|
|
/// Reference to the progress bar image, so we can add fancy colors
|
|
/// </summary>
|
|
public Image feedbackProgressImage;
|
|
|
|
public List<Learnable> signs;
|
|
public int currentSignIndex;
|
|
|
|
public void Display()
|
|
{
|
|
Learnable currentSign = signs[currentSignIndex];
|
|
videoPlayer.aspectRatio = VideoAspectRatio.FitInside;
|
|
videoPlayer.clip = currentSign.clip;
|
|
videoPlayer.Play();
|
|
|
|
feedbackProgressObject.SetActive(!isPreview);
|
|
previewMessage.SetActive(isPreview);
|
|
|
|
List<Sprite> sprites = new List<Sprite>() { currentSign.image };
|
|
if (currentSign.handGuide != null)
|
|
sprites.Add(currentSign.handGuide);
|
|
|
|
foreach (Sprite s in sprites)
|
|
{
|
|
GameObject sprite = GameObject.Instantiate(signImagePrefab, signImageContainer);
|
|
sprite.GetComponent<Image>().sprite = s;
|
|
}
|
|
}
|
|
|
|
/// <summary>
|
|
/// This function is called when the pause-button is pressed on the video.
|
|
/// It switches between playing and pausing the video.
|
|
/// It then makes the button invisible when the video is playing, or visible when it's paused.
|
|
/// </summary>
|
|
public void TogglePlayPause()
|
|
{
|
|
if (!videoPlayer.isPlaying)
|
|
{
|
|
// Play video and switch sprite of button
|
|
playButton.sprite = pauseSprite;
|
|
videoPlayer.Play();
|
|
}
|
|
|
|
else
|
|
{
|
|
// Pause video and and switch sprite of button
|
|
playButton.sprite = playSprite;
|
|
videoPlayer.Pause();
|
|
}
|
|
|
|
}
|
|
}
|