Beispiel #1
0
bool NeuronPlugin::activate() {
    InputPlugin::activate();

    // register with userInputMapper
    auto userInputMapper = DependencyManager::get<controller::UserInputMapper>();
    userInputMapper->registerDevice(_inputDevice);

    // register c-style callbacks
    BRRegisterFrameDataCallback((void*)this, FrameDataReceivedCallback);
    BRRegisterCommandDataCallback((void*)this, CommandDataReceivedCallback);
    BRRegisterSocketStatusCallback((void*)this, SocketStatusChangedCallback);

    // TODO: Pull these from prefs dialog?
    // localhost is fine for now.
    _serverAddress = "localhost";
    _serverPort = 7001;  // default port for TCP Axis Neuron server.

    _socketRef = BRConnectTo((char*)_serverAddress.c_str(), _serverPort);
    if (!_socketRef) {
        // error
        qCCritical(inputplugins) << "NeuronPlugin: error connecting to " << _serverAddress.c_str() << ":" << _serverPort << ", error = " << BRGetLastErrorMessage();
        return false;
    } else {
        qCDebug(inputplugins) << "NeuronPlugin: success connecting to " << _serverAddress.c_str() << ":" << _serverPort;

        BRRegisterAutoSyncParmeter(_socketRef, Cmd_CombinationMode);
        return true;
    }
}
MStatus NeuronForMayaCmd::doIt( const MArgList& args )
{
    MStatus status;

    status = parseArgs( args ); 
    if( status != MStatus::kSuccess)
    {
        MGlobal::displayError( "parameters are not correct." );
        return status;
    }

    MSelectionList sl;
    sl.add( mDeviceName );
    MObject deviceObj;
    status = sl.getDependNode(0, deviceObj );
    if(status != MStatus::kSuccess )
    {
        MGlobal::displayError("Please create your device first.");
        return status;
    }
    MFnDependencyNode fnDevice(deviceObj);
    MString ip = fnDevice.findPlug( "inputIp", &status ).asString();
    int     port = fnDevice.findPlug("inputPort", &status).asInt();


    if( mStart ){
        // to register the 3 callback to fetch data from Neuron
        BRRegisterFrameDataCallback(NULL, NeuronForMayaDevice::myFrameDataReceived );
        //BRRegisterCommandDataCallback(NULL, NeuronForMayaDevice::myCommandDataReceived );
        BRRegisterSocketStatusCallback (NULL, NeuronForMayaDevice::mySocketStatusChanged );

        socketInfo = BRConnectTo(const_cast<char*> (ip.asChar()), port);
        if(socketInfo == NULL )
            MGlobal::displayError("Failed to connect to device.");
    }
    else
    {
        // stop socket
        BRCloseSocket( socketInfo);
    }
    
    return MStatus::kSuccess;
}
Beispiel #3
0
void ofxNeuron::registerCallbacks(){
	bool bBVH=false;
	bool bCmd=false;
	bool bSSt=false;
	void * ptr = NULL;
	cout<<"ofxNeuron: registering callbacks: "<<endl;
	cout<<"- BVHDataReceived... ";
	_DataReceived = FrameDataReceived(bvhDataReceived);
	if(_DataReceived){
		BRRegisterFrameDataCallback(ptr, _DataReceived);
		bBVH=true;
		cout<<"done."<<endl;
	}else{
		cout<<"failed."<<endl;
	}
	cout<<"- CMDDataReceived... ";
	_CmdDataReceived = CommandDataReceived(cmdDataReceived);
	if(_CmdDataReceived){
		BRRegisterCommandDataCallback(ptr, _CmdDataReceived);
		bCmd=true;
		cout<<"done."<<endl;
	}else{
		cout<<"failed."<<endl;
	}
	cout<<"- SocketStatusChanged... ";
	_SocketStatusChanged = SocketStatusChanged(socketStatusChanged);
	if(_SocketStatusChanged){
		BRRegisterSocketStatusCallback(ptr, _SocketStatusChanged);
		bSSt=true;
		cout<<"done."<<endl;
	}else{
		cout<<"failed."<<endl;
	}

	bCallbacks = bBVH&&bCmd&&bSSt;
}