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)); }
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)); }