Example #1
0
FREObject KinectDevice::freSetRGBMode(FREObject argv[])
{
	unsigned int width; FREGetObjectAsUint32(argv[1], &width);
    unsigned int height; FREGetObjectAsUint32(argv[2], &height);
    
    lockRGBMutex();
	setRGBMode(rgbImageBytesGenerator->getSourceWidth(), rgbImageBytesGenerator->getSourceHeight(), width, height, createBoolFromFREObject(argv[3]));
    unlockRGBMutex();
    return NULL;
}
extern "C" FREObject RigidBodyremoveConstraintRef(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_body = argv[0];
    FREObject as3_constraint = argv[1];
    btRigidBody* body;
    btTypedConstraint* constraint;
    
    FREGetObjectAsUint32(as3_body, (uint32_t*)&body);
    FREGetObjectAsUint32(as3_constraint, (uint32_t*)&constraint);
    body->removeConstraintRef(constraint);
    return NULL;
}
Example #3
0
FREObject KinectDevice::freSetInfraredMode(FREObject argv[])
{
    unsigned int width; FREGetObjectAsUint32(argv[1], &width);
    unsigned int height; FREGetObjectAsUint32(argv[2], &height);
    
    lockInfraredMutex();
	infraredImageBytesGenerator->setTargetSize(width, height);
	infraredImageBytesGenerator->setTargetMirrored(createBoolFromFREObject(argv[3]));
    unlockInfraredMutex();

    return NULL;
}
extern "C" FREObject RigidBodygetConstraintRef(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_body = argv[0];
    FREObject as3_index = argv[1];
    btRigidBody* body;
    uint32_t index;
    
    FREGetObjectAsUint32(as3_body, (uint32_t*)&body);
    FREGetObjectAsUint32(as3_index, &index);
    btTypedConstraint* ref = body->getConstraintRef(index);
    
    FREObject as3ref;
    FRENewObjectFromUint32((uint32_t)ref, &as3ref);
    return as3ref;
}
	FREObject FlyCapture2_startCamera(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]){
		FREObject retObj;
		
		unsigned int nr; FREGetObjectAsUint32(argv[0], &nr);
		fc2Manager.startCamera(nr);
		return NULL;
	}
extern "C" FREObject createRigidBody(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_shape = argv[0];
    FREObject as3_mass = argv[1];
    FREObject as3_inertia = argv[2];
    btCollisionShape* shape;
    double mass;
    
    FREGetObjectAsUint32(as3_shape, (uint32_t*)&shape);
    FREGetObjectAsDouble(as3_mass, &mass);
    
    bool isDynamic = (mass != 0.0f);
    
    btVector3 localInertia(0,0,0);
    if (as3_inertia)
        localInertia = vec3DToBtVector(as3_inertia);
    else if (isDynamic)
        shape->calculateLocalInertia((btScalar)mass, localInertia);
    
//    btMotionState* a3dMotionState = new Away3DMotionState(as3_skin);
    btMotionState* defaultMS = new btDefaultMotionState();
    btRigidBody::btRigidBodyConstructionInfo rbInfo((btScalar)mass, defaultMS, shape, localInertia);
    btRigidBody* body = new btRigidBody(rbInfo);
    
    FREObject ptr;
    FRENewObjectFromUint32((uint32_t)body, &ptr);
    return ptr;
}
	FREObject FlyCapture2_getCameraInfo(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]){
		FREObject retObj;
		
		unsigned int nr; FREGetObjectAsUint32(argv[0], &nr);
		retObj = fc2Manager.getCameraInfo(nr);
		return retObj;
	}
bool FREGetUint32(FREObject object, uint32* val) {
	// really, Adobe ...?
#ifdef LINUX
	return (FREGetObjectAsUInt32(object, val) == FRE_OK);
#else
	return (FREGetObjectAsUint32(object, val) == FRE_OK);
#endif
}
Example #9
0
FREObject KinectDevice::freSetPointCloudMode(FREObject argv[])
{
	lockPointCloudMutex();
    
    unsigned int width; FREGetObjectAsUint32(argv[1], &width);
    unsigned int height; FREGetObjectAsUint32(argv[2], &height);
    unsigned int density; FREGetObjectAsUint32(argv[4], &density);

	pointCloudGenerator->setTargetSize(width, height);
	pointCloudGenerator->setTargetDensity(density);
	pointCloudGenerator->setIncludeRGB(createBoolFromFREObject(argv[5]));
	pointCloudGenerator->setTargetMirrored(createBoolFromFREObject(argv[3]));
    
    unlockPointCloudMutex();
    
    return NULL;
}
Example #10
0
 //start policy
 FREObject LeapNative_setPolicyFlags(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[]) {
     leapnative::LNLeapDevice* device;
     FREGetContextNativeData(ctx, (void **) &device);
     
     uint32_t flags;
     FREGetObjectAsUint32(argv[0], &flags);
     
     return device->setPolicyFlags(flags);
 }
Example #11
0
FREObject KinectDevice::freGetPointCloudFrame(FREObject argv[])
{
	FREObject objectPointsByteArray = argv[1];
    
	const unsigned int numPointBytes = pointCloudGenerator->getByteArrayLength() * sizeof(short);
	if(numPointBytes == 0) return NULL;

    lockPointCloudMutex();
    
    FREByteArray pointsByteArray;			
    FREObject pointsLength;
    FRENewObjectFromUint32(numPointBytes, &pointsLength);
    FRESetObjectProperty(objectPointsByteArray, (const uint8_t*) "length", pointsLength, NULL);
    FREAcquireByteArray(objectPointsByteArray, &pointsByteArray);
	memcpy(pointsByteArray.bytes, pointCloudGenerator->getTargetBytes(), numPointBytes);
    FREReleaseByteArray(objectPointsByteArray);
    
    //set the region information?
    FREObject asPointCloudRegions = argv[2];
    if(asPointCloudRegions != NULL && &pointCloudRegions != 0)
    {
        //loop through these actionscript regions and get the native info back
        FREObject asPointCloudRegion, asRegionId;
        FREObject asNumPoints;
        unsigned int regionId;
        
        uint32_t freNumRegions;
        FREGetArrayLength(asPointCloudRegions, &freNumRegions);
        
        for(unsigned int i = 0; i < freNumRegions; i++)
        {
            FREGetArrayElementAt(asPointCloudRegions, i, &asPointCloudRegion);
            FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "regionId", &asRegionId, NULL);
            FREGetObjectAsUint32(asRegionId, &regionId);
            //get the region with this id from the device memory
            for(unsigned int j = 0; j < numRegions; j++)
            {
                PointCloudRegion *nativeRegion = &pointCloudRegions[j];
                if(nativeRegion->regionId == regionId)
                {
                    //update the actionscript properties
                    FRENewObjectFromUint32(nativeRegion->numPoints, &asNumPoints);
                    FRESetObjectProperty(asPointCloudRegion, (const uint8_t *) "numPoints", asNumPoints, NULL);
                    break;
                }
            }
        }
    }
    
    unlockPointCloudMutex();
    
    return NULL;
}
extern "C" FREObject RigidBodysetAngularDamping(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_body = argv[0];
    FREObject as3_damping = argv[1];
    btRigidBody* body;
    double damping;
    
    FREGetObjectAsUint32(as3_body, (uint32_t*)&body);
    FREGetObjectAsDouble(as3_damping, &damping);
    body->setDamping(body->getLinearDamping(), btScalar(damping));
    return NULL;
}
extern "C" FREObject RigidBodygetNumConstraintRefs(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_body = argv[0];
    btRigidBody* body;
    
    FREGetObjectAsUint32(as3_body, (uint32_t*)&body);
    uint32_t num = body->getNumConstraintRefs();
    
    FREObject as3num;
    FRENewObjectFromUint32(num, &as3num);
    return as3num;
}
Example #14
0
FREObject KinectDevice::freGetUserMaskFrame(FREObject argv[])
{
	unsigned int trackingID; FREGetObjectAsUint32(argv[1], &trackingID);
    
    if(trackingID > 0) trackingID--;
    
    const unsigned int numUserMaskBytes = userMasksGenerator->getTargetPixelCount() * 4;
    
    FREObject objectByteArray = argv[2];
    FREByteArray byteArray;			
    FREObject length;
    FRENewObjectFromUint32(numUserMaskBytes, &length);
    FRESetObjectProperty(objectByteArray, (const uint8_t*) "length", length, NULL);
    FREAcquireByteArray(objectByteArray, &byteArray);
    lockUserMaskMutex();
	memcpy(byteArray.bytes, userMasksGenerator->getTargetBytes()[trackingID], numUserMaskBytes);
    unlockUserMaskMutex();
    FREReleaseByteArray(objectByteArray);
    
    return NULL;
}
FREObject sendByte(FREContext ctx, void* funcData, uint32_t argc, FREObject argv[])
{
	FREObject result;

	uint32_t dataToSend;
	int sendResult = 0;

	FREGetObjectAsUint32(argv[0], &dataToSend);

	sendResult = SendByte(comPort, (unsigned char)dataToSend);

	if (sendResult == -1)
	{
		FRENewObjectFromBool(0, &result);
	}
	else
	{
		FRENewObjectFromBool(1, &result);
	}
	return result;
}
Example #16
0
FREObject KinectDevice::freSetPointCloudRegions(FREObject argv[])
{
	FREObject asPointCloudRegions = argv[1];
    FREObject asPointCloudRegion, asRegionId, asX, asY, asZ, asWidth, asHeight, asDepth;
    unsigned int regionId;
    double x, y, z, width, height, depth;
    
    uint32_t freNumRegions;
    FREGetArrayLength(asPointCloudRegions, &freNumRegions);
    
    PointCloudRegion *nativeRegions = new PointCloudRegion[freNumRegions];
    
    for(unsigned int i = 0; i < freNumRegions; i++)
    {
        FREGetArrayElementAt(asPointCloudRegions, i, &asPointCloudRegion);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "regionId", &asRegionId, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "x", &asX, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "y", &asY, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "z", &asZ, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "width", &asWidth, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "height", &asHeight, NULL);
        FREGetObjectProperty(asPointCloudRegion, (const uint8_t *) "depth", &asDepth, NULL);
        FREGetObjectAsUint32(asRegionId, &regionId);
        FREGetObjectAsDouble(asX, &x);
        FREGetObjectAsDouble(asY, &y);
        FREGetObjectAsDouble(asZ, &z);
        FREGetObjectAsDouble(asWidth, &width);
        FREGetObjectAsDouble(asHeight, &height);
        FREGetObjectAsDouble(asDepth, &depth);
        PointCloudRegion *nativeRegion = new PointCloudRegion();
        nativeRegion->setProperties(regionId, x, y, z, width, height, depth);
        nativeRegions[i] = *nativeRegion;
    }
    
    this->pointCloudRegions = nativeRegions;
    this->numRegions = freNumRegions;
    
    return NULL;
}
extern "C" FREObject RigidBodysetMassProps(FREContext ctx, void *funcData, uint32_t argc, FREObject argv[])
{
    FREObject as3_body = argv[0];
    FREObject as3_mass = argv[1];
    FREObject as3_intertia = argv[2];
    btRigidBody* body;
    double mass;
    
    FREGetObjectAsUint32(as3_body, (uint32_t*)&body);
    FREGetObjectAsDouble(as3_mass, &mass);
    btVector3 inertia;
    if (as3_intertia) {
        inertia = vec3DToBtVector(as3_intertia);
    } else if (mass == 0.0) {
        inertia = btVector3(0,0,0);
    } else {
        body->getCollisionShape()->calculateLocalInertia(btScalar(mass), inertia);
    }
    body->setMassProps(btScalar(mass), inertia);
    body->updateInertiaTensor();
    return NULL;
}
Example #18
0
uint32_t getUInt32FromFREObject(FREObject uintAS) {
	uint32_t result = 0;
	FREGetObjectAsUint32(uintAS, &result);
	return result;
}