private static void WaitUnloadTask <T>(AsyncOperationHandle <T> operation, Action <float> pProgress = null, Action <bool> pOnCompleted = null)
        {
            WaitUtil.Start(new WaitUtil.ConditionEvent()
            {
                triggerCondition = () => operation.IsDone,
                onUpdate         = () =>
                {
                    if (pProgress != null)
                    {
                        pProgress(operation.PercentComplete);
                    }
                },
                onTrigger = () =>
                {
                    if (pOnCompleted != null)
                    {
                        pOnCompleted(true);
                    }

                    if (operation.Status == AsyncOperationStatus.Failed)
                    {
                        Debug.LogError("Failed to unload asset: " + operation.OperationException.ToString());
                    }
                },
            });
        }
        public static void CheckServerTime(Action <bool> pOnFinished)
        {
            if (mCheckingTime)
            {
                return;
            }

            string url = "https://showcase.api.linx.twenty57.net/UnixTime/tounix?date=now";

            //var form = new WWWForm();
            UnityWebRequest.ClearCookieCache();
            var request = UnityWebRequest.Get(url);

            request.SendWebRequest();

            mCheckingTime = true;
            WaitUtil.Start(() => request.isDone, () =>
            {
                mCheckingTime = false;
                if (request.isNetworkError)
                {
                    pOnFinished.Raise(false);
                }
                else
                {
                    if (request.responseCode == 200)
                    {
                        var text      = request.downloadHandler.text;
                        long unixTime = 0;
                        if (long.TryParse(text, out unixTime))
                        {
                            mStartServerTime = Config.UnixTimeStampToDateTime(unixTime);
                        }
                        mAppTimeWhenGetServerTime = Time.unscaledTime;
                        pOnFinished.Raise(true);
                    }
                    else
                    {
                        pOnFinished.Raise(false);
                    }
                }
            });
        }
 public void Start()
 {
     WaitUtil.Start(this);
 }