@@ -164,22 +164,20 @@ JNIEXPORT jint JNICALL Java_com_github_stephengold_joltjni_Ragdoll_getConstraint
164164/*
165165 * Class: com_github_stephengold_joltjni_Ragdoll
166166 * Method: getPose
167- * Signature: (J[DJZ )V
167+ * Signature: (JLjava/nio/DoubleBuffer;JZ )V
168168 */
169169JNIEXPORT void JNICALL Java_com_github_stephengold_joltjni_Ragdoll_getPose
170- (JNIEnv *pEnv, jclass, jlong ragdollVa, jdoubleArray storeDoubles,
170+ (JNIEnv *pEnv, jclass, jlong ragdollVa, jobject storeDoubles,
171171 jlong storeMatsVa, jboolean lockBodies) {
172172 Ragdoll * const pRagdoll = reinterpret_cast <Ragdoll *> (ragdollVa);
173173 RVec3 rootOffset;
174174 Mat44 * const pMatrices = reinterpret_cast <Mat44 *> (storeMatsVa);
175175 pRagdoll->GetPose (rootOffset, pMatrices, lockBodies);
176- jboolean isCopy;
177- jdouble * const pStoreDoubles
178- = pEnv->GetDoubleArrayElements (storeDoubles, &isCopy);
176+ DIRECT_DOUBLE_BUFFER (pEnv, storeDoubles, pStoreDoubles, capacityDoubles);
177+ JPH_ASSERT (capacityDoubles >= 3 );
179178 pStoreDoubles[0 ] = rootOffset.GetX ();
180179 pStoreDoubles[1 ] = rootOffset.GetY ();
181180 pStoreDoubles[2 ] = rootOffset.GetZ ();
182- pEnv->ReleaseDoubleArrayElements (storeDoubles, pStoreDoubles, 0 );
183181}
184182
185183/*
@@ -209,29 +207,26 @@ JNIEXPORT jint JNICALL Java_com_github_stephengold_joltjni_Ragdoll_getRefCount
209207/*
210208 * Class: com_github_stephengold_joltjni_Ragdoll
211209 * Method: getRootTransform
212- * Signature: (J[D[FZ )V
210+ * Signature: (JLjava/nio/DoubleBuffer;Ljava/nio/FloatBuffer;Z )V
213211 */
214212JNIEXPORT void JNICALL Java_com_github_stephengold_joltjni_Ragdoll_getRootTransform
215- (JNIEnv *pEnv, jclass, jlong ragdollVa, jdoubleArray storeDoubles,
216- jfloatArray storeFloats, jboolean lockBodies) {
213+ (JNIEnv *pEnv, jclass, jlong ragdollVa, jobject storeDoubles,
214+ jobject storeFloats, jboolean lockBodies) {
217215 const Ragdoll * const pRagdoll = reinterpret_cast <Ragdoll *> (ragdollVa);
218216 RVec3 outPosition;
219217 Quat outRotation;
220218 pRagdoll->GetRootTransform (outPosition, outRotation, lockBodies);
221- jboolean isCopy;
222- jdouble * const pStoreDoubles
223- = pEnv->GetDoubleArrayElements (storeDoubles, &isCopy);
219+ DIRECT_DOUBLE_BUFFER (pEnv, storeDoubles, pStoreDoubles, capacityDoubles);
220+ JPH_ASSERT (capacityDoubles >= 3 );
224221 pStoreDoubles[0 ] = outPosition.GetX ();
225222 pStoreDoubles[1 ] = outPosition.GetY ();
226223 pStoreDoubles[2 ] = outPosition.GetZ ();
227- pEnv->ReleaseDoubleArrayElements (storeDoubles, pStoreDoubles, 0 );
228- jfloat * const pStoreFloats
229- = pEnv->GetFloatArrayElements (storeFloats, &isCopy);
224+ DIRECT_FLOAT_BUFFER (pEnv, storeFloats, pStoreFloats, capacityFloats);
225+ JPH_ASSERT (capacityFloats >= 4 );
230226 pStoreFloats[0 ] = outRotation.GetX ();
231227 pStoreFloats[1 ] = outRotation.GetY ();
232228 pStoreFloats[2 ] = outRotation.GetZ ();
233229 pStoreFloats[3 ] = outRotation.GetW ();
234- pEnv->ReleaseFloatArrayElements (storeFloats, pStoreFloats, 0 );
235230}
236231
237232/*
0 commit comments