void ramNodeArray::updateWithOscMessage(const ofxOscMessage &m)
{
	const int nNodes = m.getArgAsInt32(1);
	
	for (int i = 0; i < nNodes; i++)
	{
		const string name = m.getArgAsString(i * 8 + 0 + 2);
		const float vx = m.getArgAsFloat(i * 8 + 1 + 2);
		const float vy = m.getArgAsFloat(i * 8 + 2 + 2);
		const float vz = m.getArgAsFloat(i * 8 + 3 + 2);
		const float angle = m.getArgAsFloat(i * 8 + 4 + 2);
		const float ax = m.getArgAsFloat(i * 8 + 5 + 2);
		const float ay = m.getArgAsFloat(i * 8 + 6 + 2);
		const float az = m.getArgAsFloat(i * 8 + 7 + 2);
		const ofVec3f axis(ax, ay, az);
		const ofVec3f vec(vx, vy, vz);
		const ofQuaternion quat(angle, axis);

		ramNode &node = getNode(i);
		node.node_id = i;
		node.name = isActor() ? getJointName(i) : "Node " + ofToString(i);
		node.setGlobalPosition(vec);
		node.setGlobalOrientation(quat);
		node.accelerometer.update(vec, quat);
	}

	last_timestamp = current_timestamp;
	current_timestamp = m.getArgAsFloat(2 + nNodes * 8);
	last_update_client_time = ofGetElapsedTimef();
}
Example #2
0
/*----------------------------------------------------------------------*/
static void showInstanceLocation(int ins, char *prefix) {
    char buffer[1000];

    if (admin[ins].location == 0)
        return;
    else {
        output(prefix);
        if (isALocation(admin[ins].location)) {
            output("at");
            say(admin[ins].location);
            sprintf(buffer, "[%d]", admin[ins].location);
            output(buffer);
        } else if (isContainer(admin[ins].location)) {
		  
            if (isObject(admin[ins].location))
                output("in");
            else if (isActor(admin[ins].location))
                output("carried by");
            say(admin[ins].location);
            sprintf(buffer, "[%d]", admin[ins].location);
            output(buffer);

        } else
            output("Illegal location!");
    }
}