Exemplo n.º 1
0
        public T CallStatic <T>(string javaClassName, string methodName, params object[] args)
        {
            var javaClass = GetJavaClass(javaClassName);

            var arguments = new List <object>();

            foreach (object p in args)
            {
                arguments.Add(ConvertObjectData(p));
            }


            LogCommunication(javaClassName, methodName, arguments);

            if (Application.isEditor)
            {
                return(default(T));
            }

            if (IsPrimitive(typeof(T)))
            {
                var result = javaClass.CallStatic <T>(methodName, arguments.ToArray());
                AN_Logger.LogCommunication("[Sync] Sent to Unity ->: " + result);
                return(result);
            }

            var json = javaClass.CallStatic <string>(methodName, arguments.ToArray());

            AN_Logger.LogCommunication("[Sync] Sent to Unity ->: " + json);
            return(JsonUtility.FromJson <T>(json));
        }
Exemplo n.º 2
0
        private void LogCommunication(string className, string methodName, List <object> arguments)
        {
            var strippedClassName = SA_PathUtil.GetExtension(className);

            strippedClassName = strippedClassName.Substring(1);
            var argumentsLog = LogArguments(arguments);

            if (!string.IsNullOrEmpty(argumentsLog))
            {
                argumentsLog = " :: " + argumentsLog;
            }
            AN_Logger.LogCommunication("Sent to Java -> " + strippedClassName + "." + methodName + argumentsLog);
        }
            public void onHandleResult(string json, bool forceMainThread)
            {
                AN_Logger.LogCommunication("[Async] Sent to Unity ->: " + json);
                var result = JsonUtility.FromJson <T>(json);

                if (forceMainThread)
                {
                    SA_MainThreadDispatcher.Enqueue(() => {
                        m_ResultHandler.Invoke(result);
                    });
                }
                else
                {
                    m_ResultHandler.Invoke(result);
                }
            }
        public R Invoke <R>()
        {
            AN_Java.Bridge.LogCommunication(m_ClassName, m_MethodName, m_Arguments);
            if (Application.isEditor)
            {
                return(default(R));
            }

            var javaClass = AN_Java.Bridge.GetJavaClass(m_ClassName);

            if (AN_Java.Bridge.IsPrimitive(typeof(R)))
            {
                var result = javaClass.CallStatic <R>(m_MethodName, m_Arguments.ToArray());
                AN_Logger.LogCommunication("[Sync] Sent to Unity ->: " + result);
                return(result);
            }

            var json = javaClass.CallStatic <string>(m_MethodName, m_Arguments.ToArray());

            AN_Logger.LogCommunication("[Sync] Sent to Unity ->: " + json);
            return(JsonUtility.FromJson <R>(json));
        }