186 lines
3.8 KiB
C#
186 lines
3.8 KiB
C#
// (c) Copyright HutongGames, LLC 2010-2013. All rights reserved.
|
|
|
|
#if !(UNITY_SWITCH || UNITY_TVOS || UNITY_IPHONE || UNITY_IOS || UNITY_ANDROID || UNITY_FLASH || UNITY_PS3 || UNITY_PS4 || UNITY_XBOXONE || UNITY_BLACKBERRY || UNITY_WP8 || UNITY_PSM || UNITY_WEBGL)
|
|
|
|
|
|
using UnityEngine;
|
|
|
|
#if UNITY_2018_3_OR_NEWER
|
|
using UnityEngine.Networking;
|
|
#endif
|
|
|
|
namespace HutongGames.PlayMaker.Actions
|
|
{
|
|
[ActionCategory ("WWW")]
|
|
[Tooltip ("Gets data from a url and store it in variables. See Unity WWW docs for more details.")]
|
|
public class WWWObject : FsmStateAction
|
|
{
|
|
[RequiredField]
|
|
[Tooltip ("Url to download data from.")]
|
|
public FsmString url;
|
|
|
|
[ActionSection ("Results")]
|
|
|
|
[UIHint (UIHint.Variable)]
|
|
[Tooltip ("Gets text from the url.")]
|
|
public FsmString storeText;
|
|
|
|
[UIHint (UIHint.Variable)]
|
|
[Tooltip ("Gets a Texture from the url.")]
|
|
public FsmTexture storeTexture;
|
|
|
|
#if ! UNITY_2018_3_OR_NEWER
|
|
[UIHint (UIHint.Variable)]
|
|
[ObjectType (typeof(MovieTexture))]
|
|
[Tooltip ("Gets a Texture from the url.")]
|
|
public FsmObject storeMovieTexture;
|
|
#endif
|
|
|
|
[UIHint (UIHint.Variable)]
|
|
[Tooltip ("Error message if there was an error during the download.")]
|
|
public FsmString errorString;
|
|
|
|
[UIHint (UIHint.Variable)]
|
|
[Tooltip ("How far the download progressed (0-1).")]
|
|
public FsmFloat progress;
|
|
|
|
[ActionSection ("Events")]
|
|
|
|
[Tooltip ("Event to send when the data has finished loading (progress = 1).")]
|
|
public FsmEvent isDone;
|
|
|
|
[Tooltip ("Event to send if there was an error.")]
|
|
public FsmEvent isError;
|
|
|
|
#if ! UNITY_2018_3_OR_NEWER
|
|
private WWW wwwObject;
|
|
#else
|
|
private UnityWebRequest uwr;
|
|
|
|
DownloadHandlerBuffer d;
|
|
#endif
|
|
public override void Reset()
|
|
{
|
|
url = null;
|
|
storeText = null;
|
|
storeTexture = null;
|
|
errorString = null;
|
|
progress = null;
|
|
isDone = null;
|
|
}
|
|
|
|
public override void OnEnter()
|
|
{
|
|
if (string.IsNullOrEmpty (url.Value))
|
|
{
|
|
Finish ();
|
|
return;
|
|
}
|
|
|
|
#if UNITY_2018_3_OR_NEWER
|
|
if (!storeTexture.IsNone)
|
|
{
|
|
uwr = UnityWebRequestTexture.GetTexture(url.Value);
|
|
}else{
|
|
uwr = new UnityWebRequest(url.Value);
|
|
d = new DownloadHandlerBuffer();
|
|
uwr.downloadHandler = d;
|
|
}
|
|
|
|
uwr.SendWebRequest();
|
|
|
|
#else
|
|
wwwObject = new WWW (url.Value);
|
|
#endif
|
|
}
|
|
|
|
|
|
#if UNITY_2018_3_OR_NEWER
|
|
|
|
public override void OnUpdate()
|
|
{
|
|
if (uwr == null)
|
|
{
|
|
errorString.Value = "Unity Web Request is Null!";
|
|
Finish();
|
|
return;
|
|
}
|
|
|
|
errorString.Value = uwr.error;
|
|
|
|
if (!string.IsNullOrEmpty(uwr.error))
|
|
{
|
|
Finish();
|
|
Fsm.Event(isError);
|
|
return;
|
|
}
|
|
|
|
progress.Value = uwr.downloadProgress;
|
|
|
|
if (progress.Value.Equals(1f))
|
|
{
|
|
if (!storeText.IsNone)
|
|
{
|
|
storeText.Value = uwr.downloadHandler.text;
|
|
}
|
|
|
|
if (!storeTexture.IsNone)
|
|
{
|
|
storeTexture.Value = ((DownloadHandlerTexture)uwr.downloadHandler).texture as Texture;
|
|
}
|
|
|
|
errorString.Value = uwr.error;
|
|
|
|
Fsm.Event(string.IsNullOrEmpty(errorString.Value) ? isDone : isError);
|
|
|
|
Finish();
|
|
}
|
|
}
|
|
|
|
#else
|
|
|
|
public override void OnUpdate()
|
|
{
|
|
if (wwwObject == null)
|
|
{
|
|
errorString.Value = "WWW Object is Null!";
|
|
Finish ();
|
|
return;
|
|
}
|
|
|
|
errorString.Value = wwwObject.error;
|
|
|
|
if (!string.IsNullOrEmpty (wwwObject.error))
|
|
{
|
|
Finish ();
|
|
Fsm.Event (isError);
|
|
return;
|
|
}
|
|
|
|
progress.Value = wwwObject.progress;
|
|
|
|
if (progress.Value.Equals (1f))
|
|
{
|
|
storeText.Value = wwwObject.text;
|
|
storeTexture.Value = wwwObject.texture;
|
|
|
|
#if UNITY_2018_2_OR_NEWER
|
|
#if UNITY_5_6_OR_NEWER
|
|
storeMovieTexture.Value = wwwObject.GetMovieTexture();
|
|
#else
|
|
storeMovieTexture.Value = wwwObject.movie;
|
|
#endif
|
|
#endif
|
|
errorString.Value = wwwObject.error;
|
|
|
|
Fsm.Event (string.IsNullOrEmpty (errorString.Value) ? isDone : isError);
|
|
|
|
Finish ();
|
|
}
|
|
}
|
|
#endif
|
|
|
|
}
|
|
}
|
|
|
|
#endif |