Browse Source

SceneGraph: added AbstractTransformation::resetTransformation().

It was doable in subclasses, but not via any interface, making some
things impossible.
pull/278/head
Vladimír Vondruš 13 years ago
parent
commit
332e4cdb71
  1. 6
      src/SceneGraph/AbstractTransformation.h
  2. 5
      src/SceneGraph/MatrixTransformation2D.h
  3. 5
      src/SceneGraph/MatrixTransformation3D.h
  4. 14
      src/SceneGraph/RigidMatrixTransformation2D.h
  5. 14
      src/SceneGraph/RigidMatrixTransformation3D.h
  6. 10
      src/SceneGraph/Test/MatrixTransformation2DTest.cpp
  7. 10
      src/SceneGraph/Test/MatrixTransformation3DTest.cpp
  8. 10
      src/SceneGraph/Test/RigidMatrixTransformation2DTest.cpp
  9. 10
      src/SceneGraph/Test/RigidMatrixTransformation3DTest.cpp

6
src/SceneGraph/AbstractTransformation.h

@ -137,6 +137,12 @@ class MAGNUM_SCENEGRAPH_EXPORT AbstractTransformation {
/*@}*/
#endif
/**
* @brief Reset object transformation
* @return Pointer to self (for method chaining)
*/
virtual AbstractTransformation<dimensions, T>* resetTransformation() = 0;
};
/** @brief Transformation type */

5
src/SceneGraph/MatrixTransformation2D.h

@ -100,6 +100,11 @@ class MatrixTransformation2D: public AbstractTranslationRotationScaling2D<T> {
return this;
}
inline MatrixTransformation2D<T>* resetTransformation() override {
setTransformation({});
return this;
}
/**
* @copydoc AbstractTranslationRotationScaling2D::translate()
* Same as calling transform() with Matrix3::translation().

5
src/SceneGraph/MatrixTransformation3D.h

@ -88,6 +88,11 @@ class MatrixTransformation3D: public AbstractTranslationRotationScaling3D<T> {
return this;
}
inline MatrixTransformation3D<T>* resetTransformation() override {
setTransformation({});
return this;
}
/**
* @brief Multiply transformation
* @param transformation Transformation

14
src/SceneGraph/RigidMatrixTransformation2D.h

@ -75,15 +75,6 @@ class RigidMatrixTransformation2D: public AbstractTranslationRotation2D<T> {
}
#endif
/**
* @brief Reset transformation to default
* @return Pointer to self (for method chaining)
*/
inline RigidMatrixTransformation2D<T>* resetTransformation() {
setTransformation({});
return this;
}
/**
* @brief Normalize rotation part
* @return Pointer to self (for method chaining)
@ -98,6 +89,11 @@ class RigidMatrixTransformation2D: public AbstractTranslationRotation2D<T> {
return this;
}
inline RigidMatrixTransformation2D<T>* resetTransformation() override {
setTransformation({});
return this;
}
/** @copydoc AbstractTranslationRotation2D::translate() */
inline RigidMatrixTransformation2D<T>* translate(const Math::Vector2<T>& vector, TransformationType type = TransformationType::Global) override {
transform(Math::Matrix3<T>::translation(vector), type);

14
src/SceneGraph/RigidMatrixTransformation3D.h

@ -75,15 +75,6 @@ class RigidMatrixTransformation3D: public AbstractTranslationRotation3D<T> {
}
#endif
/**
* @brief Reset transformation to default
* @return Pointer to self (for method chaining)
*/
inline RigidMatrixTransformation3D<T>* resetTransformation() {
setTransformation({});
return this;
}
/**
* @brief Normalize rotation part
* @return Pointer to self (for method chaining)
@ -98,6 +89,11 @@ class RigidMatrixTransformation3D: public AbstractTranslationRotation3D<T> {
return this;
}
inline RigidMatrixTransformation3D<T>* resetTransformation() override {
setTransformation({});
return this;
}
/**
* @brief Translate object
* @param vector Translation vector

10
src/SceneGraph/Test/MatrixTransformation2DTest.cpp

@ -42,6 +42,7 @@ class MatrixTransformation2DTest: public Corrade::TestSuite::Tester {
void inverted();
void setTransformation();
void resetTransformation();
void transform();
void translate();
void rotate();
@ -56,6 +57,7 @@ MatrixTransformation2DTest::MatrixTransformation2DTest() {
&MatrixTransformation2DTest::inverted,
&MatrixTransformation2DTest::setTransformation,
&MatrixTransformation2DTest::resetTransformation,
&MatrixTransformation2DTest::transform,
&MatrixTransformation2DTest::translate,
&MatrixTransformation2DTest::rotate,
@ -102,6 +104,14 @@ void MatrixTransformation2DTest::setTransformation() {
CORRADE_COMPARE(s.transformationMatrix(), Matrix3());
}
void MatrixTransformation2DTest::resetTransformation() {
Object2D o;
o.rotate(Deg(17.0f));
CORRADE_VERIFY(o.transformationMatrix() != Matrix3());
o.resetTransformation();
CORRADE_COMPARE(o.transformationMatrix(), Matrix3());
}
void MatrixTransformation2DTest::transform() {
{
Object2D o;

10
src/SceneGraph/Test/MatrixTransformation3DTest.cpp

@ -42,6 +42,7 @@ class MatrixTransformation3DTest: public Corrade::TestSuite::Tester {
void inverted();
void setTransformation();
void resetTransformation();
void transform();
void translate();
void rotate();
@ -56,6 +57,7 @@ MatrixTransformation3DTest::MatrixTransformation3DTest() {
&MatrixTransformation3DTest::inverted,
&MatrixTransformation3DTest::setTransformation,
&MatrixTransformation3DTest::resetTransformation,
&MatrixTransformation3DTest::transform,
&MatrixTransformation3DTest::translate,
&MatrixTransformation3DTest::rotate,
@ -102,6 +104,14 @@ void MatrixTransformation3DTest::setTransformation() {
CORRADE_COMPARE(s.transformationMatrix(), Matrix4());
}
void MatrixTransformation3DTest::resetTransformation() {
Object3D o;
o.rotateX(Deg(17.0f));
CORRADE_VERIFY(o.transformationMatrix() != Matrix4());
o.resetTransformation();
CORRADE_COMPARE(o.transformationMatrix(), Matrix4());
}
void MatrixTransformation3DTest::transform() {
{
Object3D o;

10
src/SceneGraph/Test/RigidMatrixTransformation2DTest.cpp

@ -42,6 +42,7 @@ class RigidMatrixTransformation2DTest: public Corrade::TestSuite::Tester {
void inverted();
void setTransformation();
void resetTransformation();
void translate();
void rotate();
void reflect();
@ -55,6 +56,7 @@ RigidMatrixTransformation2DTest::RigidMatrixTransformation2DTest() {
&RigidMatrixTransformation2DTest::inverted,
&RigidMatrixTransformation2DTest::setTransformation,
&RigidMatrixTransformation2DTest::resetTransformation,
&RigidMatrixTransformation2DTest::translate,
&RigidMatrixTransformation2DTest::rotate,
&RigidMatrixTransformation2DTest::reflect,
@ -97,6 +99,14 @@ void RigidMatrixTransformation2DTest::setTransformation() {
CORRADE_COMPARE(s.transformationMatrix(), Matrix3());
}
void RigidMatrixTransformation2DTest::resetTransformation() {
Object2D o;
o.rotate(Deg(17.0f));
CORRADE_VERIFY(o.transformationMatrix() != Matrix3());
o.resetTransformation();
CORRADE_COMPARE(o.transformationMatrix(), Matrix3());
}
void RigidMatrixTransformation2DTest::translate() {
{
Object2D o;

10
src/SceneGraph/Test/RigidMatrixTransformation3DTest.cpp

@ -42,6 +42,7 @@ class RigidMatrixTransformation3DTest: public Corrade::TestSuite::Tester {
void inverted();
void setTransformation();
void resetTransformation();
void translate();
void rotate();
void reflect();
@ -55,6 +56,7 @@ RigidMatrixTransformation3DTest::RigidMatrixTransformation3DTest() {
&RigidMatrixTransformation3DTest::inverted,
&RigidMatrixTransformation3DTest::setTransformation,
&RigidMatrixTransformation3DTest::resetTransformation,
&RigidMatrixTransformation3DTest::translate,
&RigidMatrixTransformation3DTest::rotate,
&RigidMatrixTransformation3DTest::reflect,
@ -97,6 +99,14 @@ void RigidMatrixTransformation3DTest::setTransformation() {
CORRADE_COMPARE(s.transformationMatrix(), Matrix4());
}
void RigidMatrixTransformation3DTest::resetTransformation() {
Object3D o;
o.rotateX(Deg(17.0f));
CORRADE_VERIFY(o.transformationMatrix() != Matrix4());
o.resetTransformation();
CORRADE_COMPARE(o.transformationMatrix(), Matrix4());
}
void RigidMatrixTransformation3DTest::translate() {
{
Object3D o;

Loading…
Cancel
Save