Ejemplo n.º 1
0
        /// <summary>
        /// Calls the Javascript method
        /// </summary>
        /// <param name="javascriptMethod">The name of the Javascript method</param>
        /// <param name="callback">Callback function</param>
        /// <param name="parameters">Javascript method parameters</param>
        public void Call(string javascriptMethod, ExternalCallCallback callback, params object[] parameters)
        {
            if (!_registered)
            {
                if (!_registerRequestSent)
                {
                    if (null == _queue)
                    {
                        _queue = new Queue <ExternalCallParams>();
                    }

                    //_queue.Enqueue(new ExternalCallParams(JavascriptRegistrationMethod, _id, new object[] { gameObject.name })); // gameObject.transform.path??
                    _callbacks[_id] = RegistrationCallback;

                    string path = GameObjectUtil.HierarchyAsString(gameObject);

#if DEBUG
                    if (DebugMode)
                    {
                        Debug.Log(string.Format(@"The path is ""{0}""", path));
                    }
#endif
                    Application.ExternalCall(string.Format("{0}.{1}", JavascriptConnectorObject, JavascriptRegistrationMethod), _id,
                                             new object[] { path, "Callback", "DeepLink" });

                    _registerRequestSent = true;
                }
            }

            _id++;

            _queue.Enqueue(new ExternalCallParams(javascriptMethod, _id, parameters));

            if (null != callback)
            {
                _callbacks[_id] = callback;
            }

            if (_registered || Application.isEditor)
            {
                ProcessQueue();
            }
        }
Ejemplo n.º 2
0
        void Callback(string value)
// ReSharper restore UnusedMember.Local
        {
            //_signal.Emit(param);
            string[] parts = value.Split(CallbackStringSeparator);

            if (parts.Length != 2)
            {
                throw new Exception("parts length is not 2");
            }

            int id;

            try
            {
                id = Convert.ToInt32(parts[0]);
            }
            catch (Exception ex)
            {
                throw new Exception("parts[0] is not an integer: " + ex);
            }

            if (!_callbacks.ContainsKey(id))
            {
                return; // no callback. The call had no callback defined.
            }
            //throw new Exception(string.Format("callbacks dictionary doesn't contain id={0}", id));

            ExternalCallCallback callback = _callbacks[id];

            callback(parts[1]);

            _callbacks.Remove(id);

            if (_callbacks.Count == 0)
            {
                _id = 0; // reset
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        /// Calls the Javascript method
        /// </summary>
        /// <param name="javascriptMethod">The name of the Javascript method</param>
        /// <param name="callback">Callback function</param>
        /// <param name="parameters">Javascript method parameters</param>
        public void Call(string javascriptMethod, ExternalCallCallback callback, params object[] parameters)
        {
            if (!_registered)
            {
                if (!_registerRequestSent)
                {
                    if (null == _queue)
                        _queue = new Queue<ExternalCallParams>();

                    //_queue.Enqueue(new ExternalCallParams(JavascriptRegistrationMethod, _id, new object[] { gameObject.name })); // gameObject.transform.path??
                    _callbacks[_id] = RegistrationCallback;

                    string path = GameObjectUtil.HierarchyAsString(gameObject);

            #if DEBUG
                    if (DebugMode)
                    {
                        Debug.Log(string.Format(@"The path is ""{0}""", path));
                    }
            #endif
                    Application.ExternalCall(string.Format("{0}.{1}", JavascriptConnectorObject, JavascriptRegistrationMethod), _id,
                                             new object[] { path, "Callback", "DeepLink" });

                    _registerRequestSent = true;
                }
            }

            _id++;

            _queue.Enqueue(new ExternalCallParams(javascriptMethod, _id, parameters));

            if (null != callback)
                _callbacks[_id] = callback;

            if (_registered || Application.isEditor)
            {
                ProcessQueue();
            }
        }