canvas::Element: parse full 3x3 matrix

This doesn't change any existing behaviour but allows specifying
full 3x3 matrix to eg. perform a perspective transform needed
for some HUDs.
This commit is contained in:
Thomas Geymayer 2013-01-01 14:18:39 +01:00
parent beca1cbf96
commit 724fba4af9

View File

@ -88,14 +88,24 @@ namespace canvas
{ {
case TT_MATRIX: case TT_MATRIX:
tf = osg::Matrix( tf_node->getDoubleValue("m[0]", 1), tf = osg::Matrix( tf_node->getDoubleValue("m[0]", 1),
tf_node->getDoubleValue("m[1]", 0), 0, 0, tf_node->getDoubleValue("m[1]", 0),
0,
tf_node->getDoubleValue("m[6]", 0),
tf_node->getDoubleValue("m[2]", 0), tf_node->getDoubleValue("m[2]", 0),
tf_node->getDoubleValue("m[3]", 1), 0, 0, tf_node->getDoubleValue("m[3]", 1),
0,
tf_node->getDoubleValue("m[7]", 0),
0,
0,
1,
0,
0, 0, 1, 0,
tf_node->getDoubleValue("m[4]", 0), tf_node->getDoubleValue("m[4]", 0),
tf_node->getDoubleValue("m[5]", 0), 0, 1 ); tf_node->getDoubleValue("m[5]", 0),
0,
tf_node->getDoubleValue("m[8]", 1) );
break; break;
case TT_TRANSLATE: case TT_TRANSLATE:
tf.makeTranslate( osg::Vec3f( tf_node->getDoubleValue("t[0]", 0), tf.makeTranslate( osg::Vec3f( tf_node->getDoubleValue("t[0]", 0),