From 2c529b9db12a60eb3640975f6ea4802237e118fa Mon Sep 17 00:00:00 2001 From: JosJuice Date: Sun, 23 Jan 2022 21:47:57 +0100 Subject: Android: Add new input mapping implementation --- Source/Android/jni/Input/ControlReference.cpp | 54 +++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 Source/Android/jni/Input/ControlReference.cpp (limited to 'Source/Android/jni/Input/ControlReference.cpp') diff --git a/Source/Android/jni/Input/ControlReference.cpp b/Source/Android/jni/Input/ControlReference.cpp new file mode 100644 index 0000000000..8bf9351109 --- /dev/null +++ b/Source/Android/jni/Input/ControlReference.cpp @@ -0,0 +1,54 @@ +// Copyright 2022 Dolphin Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "jni/Input/ControlReference.h" + +#include + +#include + +#include "InputCommon/ControlReference/ControlReference.h" +#include "jni/AndroidCommon/AndroidCommon.h" +#include "jni/AndroidCommon/IDCache.h" + +ControlReference* ControlReferenceFromJava(JNIEnv* env, jobject control_reference) +{ + return reinterpret_cast( + env->GetLongField(control_reference, IDCache::GetControlReferencePointer())); +} + +jobject ControlReferenceToJava(JNIEnv* env, ControlReference* control_reference) +{ + if (!control_reference) + return nullptr; + + return env->NewObject(IDCache::GetControlReferenceClass(), + IDCache::GetControlReferenceConstructor(), + reinterpret_cast(control_reference)); +} + +extern "C" { + +JNIEXPORT jdouble JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_getState( + JNIEnv* env, jobject obj) +{ + return ControlReferenceFromJava(env, obj)->GetState(); +} + +JNIEXPORT jstring JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_getExpression( + JNIEnv* env, jobject obj) +{ + return ToJString(env, ControlReferenceFromJava(env, obj)->GetExpression()); +} + +JNIEXPORT jstring JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_setExpression( + JNIEnv* env, jobject obj, jstring expr) +{ + const std::optional result = + ControlReferenceFromJava(env, obj)->SetExpression(GetJString(env, expr)); + return result ? ToJString(env, *result) : nullptr; +} +} -- cgit v1.2.3 From c2779aef060137d9062cfd29babb3c43fc5fa2b5 Mon Sep 17 00:00:00 2001 From: JosJuice Date: Tue, 27 Dec 2022 16:29:01 +0100 Subject: Android: Add the advanced input mapping dialog It's missing a lot of features from the PC version for now, like buttons for inserting functions and the ability to see what the expression evaluates to. I mostly just wanted to get something in place so you can set up rumble. Co-authored-by: Charles Lombardo --- Source/Android/jni/Input/ControlReference.cpp | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'Source/Android/jni/Input/ControlReference.cpp') diff --git a/Source/Android/jni/Input/ControlReference.cpp b/Source/Android/jni/Input/ControlReference.cpp index 8bf9351109..533c8cb1a0 100644 --- a/Source/Android/jni/Input/ControlReference.cpp +++ b/Source/Android/jni/Input/ControlReference.cpp @@ -51,4 +51,11 @@ Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReferen ControlReferenceFromJava(env, obj)->SetExpression(GetJString(env, expr)); return result ? ToJString(env, *result) : nullptr; } + +JNIEXPORT jboolean JNICALL +Java_org_dolphinemu_dolphinemu_features_input_model_controlleremu_ControlReference_isInput( + JNIEnv* env, jobject obj) +{ + return static_cast(ControlReferenceFromJava(env, obj)->IsInput()); +} } -- cgit v1.2.3