Пример #1
0
bool Skeleton::isAncestor( unsigned int j1, unsigned int j2 )
{
	Joint* joint1 = getJointByIndex( j1 );
	Joint* joint2 = getJointByIndex( j2 );
	Joint* joint = joint2->getParent();

	while( joint )
	{
		if( joint == joint1 )
		{
			return true;
		}
		joint = joint->getParent();
	}
	return false;
}
Пример #2
0
SkinParser::TokenState SkinParser::gotMatrixKeyword(int _jointNumber){
	//std::cout << "got matrix keyword" << std::endl;

	float row0[4] = { 0, 0, 0, 0 };
	float row1[4] = { 0, 0, 0, 0 };
	float row2[4] = { 0, 0, 0, 0 };
	float row3[4] = { 0, 0, 0, 1 };
	Matrix4 matrix;

	checkForOpenCurly();
	row0[0] = atof(getNextToken().str.c_str());
	row0[1] = atof(getNextToken().str.c_str());
	row0[2] = atof(getNextToken().str.c_str());

	row1[0] = atof(getNextToken().str.c_str());
	row1[1] = atof(getNextToken().str.c_str());
	row1[2] = atof(getNextToken().str.c_str());

	row2[0] = atof(getNextToken().str.c_str());
	row2[1] = atof(getNextToken().str.c_str());
	row2[2] = atof(getNextToken().str.c_str());

	row3[0] = atof(getNextToken().str.c_str());
	row3[1] = atof(getNextToken().str.c_str());
	row3[2] = atof(getNextToken().str.c_str());

	matrix.setRow(0, row0);
	matrix.setRow(1, row1);
	matrix.setRow(2, row2);
	matrix.setRow(3, row3);

	//model.bindings.push_back(matrix);
	tree<BallJoint>::iterator it;
	it = getJointByIndex(_jointNumber);
	it->binding = matrix;

	checkForCloseCurly();
	return afterMatrixKeyword;
}