Files
unity-application/Assets/Courses/Scripts/PanelWithVideoAndImage.cs
2023-04-10 15:05:11 +00:00

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();
}
}
}