Skip to content

Commit e940d00

Browse files
committed
fix: Ensure parameter values persist after updates and add getParameterValue API
1 parent 187a916 commit e940d00

3 files changed

Lines changed: 14 additions & 1 deletion

File tree

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ native/include/
66
target/
77
**/target/
88
*.log
9+
*.class
910

1011
# SDK
1112
/sdk/

binding/src/main/java/dev/eatgrapes/live2d/CubismUserModel.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,9 @@ private void onMotionFinished(String name) {
6161
public void setParameterValue(String id, float value) { setParameterValueNative(_ptr, id, value); }
6262
private static native void setParameterValueNative(long ptr, String id, float value);
6363

64+
public float getParameterValue(String id) { return getParameterValueNative(_ptr, id); }
65+
private static native float getParameterValueNative(long ptr, String id);
66+
6467
public float getCanvasWidth() { return getCanvasWidthNative(_ptr); }
6568
private static native float getCanvasWidthNative(long ptr);
6669

native/src/CubismUserModel_JNI.cpp

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -247,8 +247,17 @@ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_updateNative(JN
247247

248248
JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_setParameterValueNative(JNIEnv* env, jclass, jlong ptr, jstring id, jfloat value) {
249249
const char* s = env->GetStringUTFChars(id, nullptr);
250-
((JniUserModel*)ptr)->GetModel()->SetParameterValue(CubismFramework::GetIdManager()->GetId(s), value);
250+
auto* model = ((JniUserModel*)ptr)->GetModel();
251+
model->SetParameterValue(CubismFramework::GetIdManager()->GetId(s), value);
252+
model->SaveParameters();
253+
env->ReleaseStringUTFChars(id, s);
254+
}
255+
256+
JNIEXPORT jfloat JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_getParameterValueNative(JNIEnv* env, jclass, jlong ptr, jstring id) {
257+
const char* s = env->GetStringUTFChars(id, nullptr);
258+
float value = ((JniUserModel*)ptr)->GetModel()->GetParameterValue(CubismFramework::GetIdManager()->GetId(s));
251259
env->ReleaseStringUTFChars(id, s);
260+
return value;
252261
}
253262

254263
JNIEXPORT jfloat JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_getCanvasWidthNative(JNIEnv*, jclass, jlong ptr) {

0 commit comments

Comments
 (0)