335 lines
7.2 KiB
C#
335 lines
7.2 KiB
C#
//-----------------------------------------------------------------------------
|
|
// Copyright 2015-2020 RenderHeads Ltd. All rights reserved.
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#if PLAYMAKER
|
|
|
|
using UnityEngine;
|
|
|
|
using HutongGames.PlayMaker;
|
|
using HutongGames.PlayMaker.Actions;
|
|
using Tooltip = HutongGames.PlayMaker.TooltipAttribute;
|
|
|
|
using RenderHeads.Media.AVProVideo;
|
|
|
|
namespace RenderHeads.Media.AVProVideo.PlayMaker.Actions
|
|
{
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Closes Video of a MediaPlayer.")]
|
|
public class AVProVideoPlayerCloseVideo : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject)))
|
|
{
|
|
ExecuteAction ();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.CloseVideo ();
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Disable subtitles of a MediaPlayer.")]
|
|
public class AVProVideoPlayerDisableSubtitles : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.DisableSubtitles();
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Enable subtitles of a MediaPlayer.")]
|
|
public class AVProVideoPlayerEnableSubtitles : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[RequiredField]
|
|
[Tooltip("The file location")]
|
|
[ObjectType(typeof(MediaPlayer.FileLocation))]
|
|
public FsmEnum fileLocation;
|
|
|
|
[RequiredField]
|
|
[Tooltip("The file path, depending on the file Location")]
|
|
public FsmString filePath;
|
|
|
|
[ActionSection("Result")]
|
|
|
|
[Tooltip("true if subtitle were enabled")]
|
|
public FsmBool success;
|
|
|
|
[Tooltip("event sent if subtitle enabling succeded")]
|
|
public FsmEvent successEvent;
|
|
|
|
[Tooltip("event sent if subtitle enabling failed")]
|
|
public FsmEvent failureEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
fileLocation = MediaPlayer.FileLocation.AbsolutePathOrURL;
|
|
filePath = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
bool ok = this.mediaPlayer.EnableSubtitles((MediaPlayer.FileLocation)fileLocation.Value, filePath.Value);
|
|
|
|
success.Value = ok;
|
|
|
|
Fsm.Event(ok ? successEvent : failureEvent);
|
|
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Open a video at a location in a MediaPlayer.")]
|
|
public class AVProVideoPlayerOpenVideoLocation : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[RequiredField]
|
|
[Tooltip("The file location")]
|
|
[ObjectType(typeof(MediaPlayer.FileLocation))]
|
|
public FsmEnum fileLocation;
|
|
|
|
[RequiredField]
|
|
[Tooltip("The file path, depending on the file Location")]
|
|
public FsmString filePath;
|
|
|
|
[Tooltip("Auto play when video is loaded")]
|
|
public FsmBool autoPlay;
|
|
|
|
[ActionSection("Result")]
|
|
|
|
[Tooltip("true if video is loading successfully")]
|
|
public FsmBool success;
|
|
|
|
[Tooltip("event sent if video is loading successfully")]
|
|
public FsmEvent successEvent;
|
|
|
|
[Tooltip("event sent if video loading failed")]
|
|
public FsmEvent failureEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
fileLocation = MediaPlayer.FileLocation.AbsolutePathOrURL;
|
|
filePath = null;
|
|
autoPlay = true;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
bool ok = this.mediaPlayer.OpenVideoFromFile((MediaPlayer.FileLocation)fileLocation.Value, filePath.Value, autoPlay.Value);
|
|
|
|
success.Value = ok;
|
|
|
|
Fsm.Event(ok ? successEvent : failureEvent);
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Pauses playback of a MediaPlayer.")]
|
|
public class AVProVideoPlayerPause : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.Pause();
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Starts playback of a MediaPlayer.")]
|
|
public class AVProVideoPlayerPlay : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.Play();
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Rewinds the video of a MediaPlayer.")]
|
|
public class AVProVideoPlayerRewind : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("The pause value when calling rewind. leave to none for default")]
|
|
public FsmBool pause;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
pause = new FsmBool() { UseVariable = true };
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.Rewind(pause.Value);
|
|
}
|
|
}
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Stops playback of a MediaPlayer.")]
|
|
public class AVProVideoPlayerStop : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
ExecuteAction();
|
|
}
|
|
|
|
Finish();
|
|
}
|
|
|
|
void ExecuteAction()
|
|
{
|
|
this.mediaPlayer.Stop();
|
|
}
|
|
}
|
|
}
|
|
#endif |