563 lines
13 KiB
C#
563 lines
13 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("Listen to the Closing Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventClosing: AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a Closing event")]
|
|
public FsmEvent closingEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
closingEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.Closing:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget (gameObject);
|
|
Fsm.Event (closingEvent);
|
|
Finish();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache (Fsm.GetOwnerDefaultTarget (gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener (OnMediaPlayerEvent);
|
|
} else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer!=null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the Error Event of a MediaPlayer and sends an event. Error Code is passed in the event data as an int. 100 = loadFailed 200 = decodeFailed")]
|
|
public class AVProVideoEventError : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a Error event")]
|
|
public FsmEvent errorEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
errorEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.Error:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.EventData.IntData = (int)errorCode;
|
|
Fsm.Event(errorEvent);
|
|
Finish();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the FinishedPlaying Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventFinishedPlaying : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a FinishedPlaying event")]
|
|
public FsmEvent finishedPlayingEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
finishedPlayingEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.FinishedPlaying:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(finishedPlayingEvent);
|
|
Finish();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the FirstFrameReady Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventFirstFrameReady : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a FirstFrameReady event")]
|
|
public FsmEvent firstFrameReadyEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
firstFrameReadyEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.FirstFrameReady:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(firstFrameReadyEvent);
|
|
Finish();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the MetaDataReady Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventMetaDataReady : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a metaDataReady event")]
|
|
public FsmEvent metaDataReadyEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
metaDataReadyEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.MetaDataReady:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(metaDataReadyEvent);
|
|
Finish();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the ReadytoPlay Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventReadyToPlay : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a ReadyToPlay event")]
|
|
public FsmEvent readyToPlayEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
readyToPlayEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.ReadyToPlay:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(readyToPlayEvent);
|
|
Finish();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the Stalled Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventStalled : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a Stalled event")]
|
|
public FsmEvent stalledEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
stalledEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.Stalled:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(stalledEvent);
|
|
Finish();
|
|
break;
|
|
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the ReadytoPlay Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventStarted : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a Started event")]
|
|
public FsmEvent startedEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
startedEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.Started:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(startedEvent);
|
|
Finish();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the SubtitleChange Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventSubtitleChange : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a SubtitleChange event")]
|
|
public FsmEvent subtitleChangeEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
subtitleChangeEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.SubtitleChange:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(subtitleChangeEvent);
|
|
Finish();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
|
|
[ActionCategory("AVProVideo")]
|
|
[Tooltip("Listen to the Unstalled Event of a MediaPlayer and sends an event.")]
|
|
public class AVProVideoEventUnstalled : AVProVideoActionBase
|
|
{
|
|
public AVProVideoActionHeader headerImage;
|
|
|
|
[RequiredField]
|
|
[CheckForComponent(typeof(MediaPlayer))]
|
|
[Tooltip("The GameObject with a MediaPlayer component.")]
|
|
public FsmOwnerDefault gameObject;
|
|
|
|
[Tooltip("Event fired when MediaPlayer sends a Unstalled event")]
|
|
public FsmEvent unstalledEvent;
|
|
|
|
public override void Reset()
|
|
{
|
|
gameObject = null;
|
|
unstalledEvent = null;
|
|
}
|
|
|
|
// Callback function to handle events
|
|
public void OnMediaPlayerEvent(MediaPlayer mp, MediaPlayerEvent.EventType et, ErrorCode errorCode)
|
|
{
|
|
switch (et)
|
|
{
|
|
case MediaPlayerEvent.EventType.Unstalled:
|
|
Fsm.EventData.GameObjectData = Fsm.GetOwnerDefaultTarget(gameObject);
|
|
Fsm.Event(unstalledEvent);
|
|
Finish();
|
|
break;
|
|
}
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (this.UpdateCache(Fsm.GetOwnerDefaultTarget(gameObject)))
|
|
{
|
|
this.mediaPlayer.Events.AddListener(OnMediaPlayerEvent);
|
|
}
|
|
else
|
|
{
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
public override void OnExit()
|
|
{
|
|
if (this.mediaPlayer != null)
|
|
{
|
|
this.mediaPlayer.Events.RemoveListener(OnMediaPlayerEvent);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
#endif |