@@ -45,9 +45,9 @@ class JniUserModel : public CubismUserModel {
4545
4646 _motionBuffers[motion] = std::move (motionBuf);
4747
48- motion->SetFinishedMotionHandlerAndMotionCustomData ([](ACubismMotion* self, void * data) {
49- auto * model = static_cast <JniUserModel*>(data);
48+ motion->SetFinishedMotionHandlerAndMotionCustomData ([](ACubismMotion* self) {
5049 auto * m = static_cast <CubismMotion*>(self);
50+ auto * model = static_cast <JniUserModel*>(m->GetFinishedMotionCustomData ());
5151 model->onMotionEnd (m);
5252 }, this );
5353
@@ -67,6 +67,13 @@ class JniUserModel : public CubismUserModel {
6767 env->DeleteLocalRef (name);
6868 }
6969
70+ bool isHitTransformed (const char * id, float x, float y) {
71+ if (!_model || !_modelMatrix) return false ;
72+ float mx = _modelMatrix->InvertTransformX (x);
73+ float my = _modelMatrix->InvertTransformY (y);
74+ return IsHit (CubismFramework::GetIdManager ()->GetId (id), mx, my);
75+ }
76+
7077 void update (float dt) {
7178 if (!_model) return ;
7279 _model->LoadParameters ();
@@ -129,29 +136,46 @@ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_loadPoseNative(
129136 env->ReleaseByteArrayElements (buffer, data, JNI_ABORT);
130137}
131138
132- JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_startMotionNative (JNIEnv* env, jclass, jlong ptr, jbyteArray buffer, jint priority) {
139+ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_loadExpressionNative (JNIEnv* env, jclass, jlong ptr, jbyteArray buffer, jstring name) {
140+ const char * n = env->GetStringUTFChars (name, nullptr );
133141 jsize len = env->GetArrayLength (buffer);
134142 jbyte* data = env->GetByteArrayElements (buffer, nullptr );
135- ((JniUserModel*)ptr)->startMotionCopy ((const csmByte*)data, len, priority );
143+ ((JniUserModel*)ptr)->LoadExpression ((const csmByte*)data, len, n );
136144 env->ReleaseByteArrayElements (buffer, data, JNI_ABORT);
145+ env->ReleaseStringUTFChars (name, n);
137146}
138147
139- JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_updateNative (JNIEnv*, jclass, jlong ptr, jfloat dt ) {
140- ((JniUserModel*)ptr)->update (dt );
148+ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_createRendererNative (JNIEnv*, jclass, jlong ptr) {
149+ ((JniUserModel*)ptr)->CreateRenderer ( );
141150}
142151
143152JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_registerTextureNative (JNIEnv*, jclass, jlong ptr, jint index, jint textureId) {
144153 auto * r = ((JniUserModel*)ptr)->GetRenderer <CubismRenderer_OpenGLES2>();
145154 if (r) r->BindTexture (index, (GLuint)textureId);
146155}
147156
157+ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_setDraggingNative (JNIEnv*, jclass, jlong ptr, jfloat x, jfloat y) {
158+ ((JniUserModel*)ptr)->SetDragging (x, y);
159+ }
160+
148161JNIEXPORT jboolean JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_isHitNative (JNIEnv* env, jclass, jlong ptr, jstring id, jfloat x, jfloat y) {
149162 const char * s = env->GetStringUTFChars (id, nullptr );
150163 bool hit = ((JniUserModel*)ptr)->isHitTransformed (s, x, y);
151164 env->ReleaseStringUTFChars (id, s);
152165 return hit;
153166}
154167
168+ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_startMotionNative (JNIEnv* env, jclass, jlong ptr, jbyteArray buffer, jint priority) {
169+ jsize len = env->GetArrayLength (buffer);
170+ jbyte* data = env->GetByteArrayElements (buffer, nullptr );
171+ ((JniUserModel*)ptr)->startMotionCopy ((const csmByte*)data, len, priority);
172+ env->ReleaseByteArrayElements (buffer, data, JNI_ABORT);
173+ }
174+
175+ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_updateNative (JNIEnv*, jclass, jlong ptr, jfloat dt) {
176+ ((JniUserModel*)ptr)->update (dt);
177+ }
178+
155179JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_setParameterValueNative (JNIEnv* env, jclass, jlong ptr, jstring id, jfloat value) {
156180 const char * s = env->GetStringUTFChars (id, nullptr );
157181 ((JniUserModel*)ptr)->GetModel ()->SetParameterValue (CubismFramework::GetIdManager ()->GetId (s), value);
@@ -186,4 +210,4 @@ JNIEXPORT void JNICALL Java_dev_eatgrapes_live2d_CubismUserModel_drawNative(JNIE
186210 env->ReleaseFloatArrayElements (matrix, m_ptr, JNI_ABORT);
187211}
188212
189- }
213+ }
0 commit comments