Browse Source

SceneGraph: added AbstractObject::transformationMatrix().

Complement for Object::transformation(), usable from features which
don't want/need to upcast AbstractObject pointer.
pull/7/head
Vladimír Vondruš 13 years ago
parent
commit
4c3e80b4f1
  1. 7
      src/SceneGraph/AbstractObject.h
  2. 4
      src/SceneGraph/Object.h
  3. 2
      src/SceneGraph/Test/ObjectTest.cpp

7
src/SceneGraph/AbstractObject.h

@ -102,6 +102,13 @@ template<std::uint8_t dimensions, class T = GLfloat> class AbstractObject
/** @{ @name Object transformation */
/**
* @brief Transformation matrix
*
* @see Object::transformation()
*/
virtual typename DimensionTraits<dimensions, T>::MatrixType transformationMatrix() const = 0;
/**
* @brief Transformation matrix relative to root object
*

4
src/SceneGraph/Object.h

@ -202,6 +202,10 @@ template<class Transformation> class Object: public AbstractObject<Transformatio
/** @{ @name Object transformation */
inline typename DimensionTraits<Transformation::Dimensions, typename Transformation::Type>::MatrixType transformationMatrix() const override {
return Transformation::toMatrix(Transformation::transformation());
}
inline typename DimensionTraits<Transformation::Dimensions, typename Transformation::Type>::MatrixType absoluteTransformationMatrix() const override {
return Transformation::toMatrix(absoluteTransformation());
}

2
src/SceneGraph/Test/ObjectTest.cpp

@ -110,6 +110,8 @@ void ObjectTest::absoluteTransformation() {
/* Proper transformation composition */
Object3D o(&s);
o.translate(Vector3::xAxis(2.0f));
CORRADE_COMPARE(o.transformation(), Matrix4::translation(Vector3::xAxis(2.0f)));
CORRADE_COMPARE(o.transformation(), o.transformationMatrix());
Object3D o2(&o);
o2.rotateY(deg(90.0f));
CORRADE_COMPARE(o2.absoluteTransformation(),

Loading…
Cancel
Save