FREObject LeapNative_isGestureEnabled(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) { leapnative::LNLeapDevice* device; FREGetContextNativeData(ctx, (void **) &device); int gestureClassType; FREGetObjectAsInt32(argv[0], &gestureClassType); bool gestureEnabled; switch (gestureClassType) { case 5: gestureEnabled = device->controller->isGestureEnabled(Gesture::TYPE_SWIPE); break; case 6: gestureEnabled = device->controller->isGestureEnabled(Gesture::TYPE_CIRCLE); break; case 7: gestureEnabled = device->controller->isGestureEnabled(Gesture::TYPE_SCREEN_TAP); break; case 8: gestureEnabled = device->controller->isGestureEnabled(Gesture::TYPE_KEY_TAP); break; default: std::cout << "LeapNative_isGestureEnabled: invalid argument" << std::endl; gestureEnabled = false; break; } return createFREObjectForBool(gestureEnabled); }
FREObject AKOpenNIUserFrameGenerator::getFREObject() { FREObject freUserFrame, freUsers; FRENewObject( (const uint8_t*) _asUserFrameClass, 0, NULL, &freUserFrame, NULL); FRESetObjectProperty(freUserFrame, (const uint8_t*) "frameNumber", createFREObjectForUnsignedInt(_userFrame->frameNumber), NULL); FRESetObjectProperty(freUserFrame, (const uint8_t*) "timeStamp", createFREObjectForUnsignedInt(_userFrame->timeStamp), NULL); FRENewObject( (const uint8_t*) "Vector.<com.as3nui.nativeExtensions.air.kinect.data.User>", 0, NULL, &freUsers, NULL); int trackedSkeletons = 0; for(int i = 0; i < _userFrame->maxSkeletons; i++) { AKOpenNIUser* user = &_openNIUserFrame->openNIUsers[i]; if(user->user->isTracking) { FREObject freUser, freJoints, freBones; FRENewObject( (const uint8_t*) _asUserClass, 0, NULL, &freUser, NULL); FRESetObjectProperty(freUser, (const uint8_t*) "framework", createFREObjectForUTF8(_framework), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "userID", createFREObjectForUnsignedInt(user->user->userID), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "trackingID", createFREObjectForUnsignedInt(user->user->trackingID), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "position", user->user->position.asFREObject(), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "hasSkeleton", createFREObjectForBool(user->user->hasSkeleton), NULL); FRENewObject( (const uint8_t*) "Vector.<com.as3nui.nativeExtensions.air.kinect.data.SkeletonJoint>", 0, NULL, &freJoints, NULL); for(int j = 0; j < user->user->numJoints; j++) { AKOpenNISkeletonJoint* skeletonJoint = &user->openNISkeletonJoints[j]; FREObject freJoint; FRENewObject( (const uint8_t*) _asJointClass, 0, NULL, &freJoint, NULL); FRESetObjectProperty(freJoint, (const uint8_t*) "name", createFREObjectForUTF8(_jointNames[skeletonJoint->skeletonJoint->jointNameIndex]), NULL); FRESetObjectProperty(freJoint, (const uint8_t*) "position", skeletonJoint->skeletonJoint->position.asFREObject(), NULL); FRESetObjectProperty(freJoint, (const uint8_t*) "positionConfidence", createFREObjectForDouble(skeletonJoint->skeletonJoint->positionConfidence), NULL); FRESetObjectProperty(freJoint, (const uint8_t*) "nativeOrientationConfidence", createFREObjectForDouble(skeletonJoint->orientationConfidence), NULL); FRESetObjectProperty(freJoint, (const uint8_t*) "nativeOrientation", skeletonJoint->orientation.asFREObject(), NULL); FRESetArrayElementAt(freJoints, j, freJoint); } FRESetObjectProperty(freUser, (const uint8_t*) "skeletonJoints", freJoints, NULL); FRENewObject( (const uint8_t*) "Vector.<com.as3nui.nativeExtensions.air.kinect.data.SkeletonBone>", 0, NULL, &freBones, NULL); for(int j = 0; j < user->user->numBones; j++) { AKOpenNISkeletonBone* skeletonBone = &user->openNISkeletonBones[j]; FREObject freBone; FRENewObject( (const uint8_t*) _asBoneClass, 0, NULL, &freBone, NULL); FRESetObjectProperty(freBone, (const uint8_t*) "name", createFREObjectForUTF8(_boneNames[skeletonBone->skeletonBone->boneNameIndex]), NULL); FRESetObjectProperty(freBone, (const uint8_t*) "orientation", skeletonBone->skeletonBone->orientation.asFREObject(), NULL); if(skeletonBone->skeletonBone->startJointNameIndex > -1) FRESetObjectProperty(freBone, (const uint8_t*) "startJointName", createFREObjectForUTF8(_jointNames[skeletonBone->skeletonBone->startJointNameIndex]), NULL); if(skeletonBone->skeletonBone->endJointNameIndex > -1) FRESetObjectProperty(freBone, (const uint8_t*) "endJointName", createFREObjectForUTF8(_jointNames[skeletonBone->skeletonBone->endJointNameIndex]), NULL); if(skeletonBone->skeletonBone->parentBoneNameIndex > -1) FRESetObjectProperty(freBone, (const uint8_t*) "parentBoneName", createFREObjectForUTF8(_boneNames[skeletonBone->skeletonBone->parentBoneNameIndex]), NULL); FRESetArrayElementAt(freBones, j, freBone); } FRESetObjectProperty(freUser, (const uint8_t*) "skeletonBones", freBones, NULL); FRESetObjectProperty(freUser, (const uint8_t*) "skeletonJointNameIndices", freGetSkeletonJointNameIndices(), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "skeletonJointNames", freGetSkeletonJointNames(), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "skeletonBoneNameIndices", freGetSkeletonBoneNameIndices(), NULL); FRESetObjectProperty(freUser, (const uint8_t*) "skeletonBoneNames", freGetSkeletonBoneNames(), NULL); FRESetArrayElementAt(freUsers, trackedSkeletons, freUser); trackedSkeletons++; } } FRESetObjectProperty(freUserFrame, (const uint8_t*) "users", freUsers, NULL); return freUserFrame; }