From d2f0a2a045727abdbec63d65e2487ed4686f5bbb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vladim=C3=ADr=20Vondru=C5=A1?= Date: Thu, 22 Nov 2012 00:45:03 +0100 Subject: [PATCH] Using default template arguments instead of GLfloat everywhere. It was mainly in DimensionTraits usage. Also using DimensionTraits::*Type for private members of physics shapes instead of manually specified superclasses. The header is still included because of all the inline accessors, so why not use the same type inside the class. --- src/Physics/AbstractShape.h | 2 +- src/Physics/AxisAlignedBox.cpp | 4 ++-- src/Physics/AxisAlignedBox.h | 18 +++++++++--------- src/Physics/Box.cpp | 2 +- src/Physics/Box.h | 12 ++++++------ src/Physics/Capsule.cpp | 8 ++++---- src/Physics/Capsule.h | 18 +++++++++--------- .../Implementation/AbstractDebugRenderer.h | 2 +- .../Implementation/AbstractShapeRenderer.h | 2 +- .../Implementation/AxisAlignedBoxRenderer.cpp | 2 +- src/Physics/Implementation/BoxRenderer.cpp | 2 +- src/Physics/Implementation/BoxRenderer.h | 2 +- src/Physics/Implementation/DebugRenderer.h | 2 +- src/Physics/Line.cpp | 6 +++--- src/Physics/Line.h | 18 +++++++++--------- src/Physics/LineSegment.h | 2 +- src/Physics/ObjectShape.cpp | 2 +- src/Physics/Plane.h | 2 +- src/Physics/Point.cpp | 4 ++-- src/Physics/Point.h | 12 ++++++------ src/Physics/ShapeGroup.cpp | 2 +- src/Physics/ShapeGroup.h | 2 +- src/Physics/Sphere.cpp | 6 +++--- src/Physics/Sphere.h | 12 ++++++------ src/SceneGraph/Test/ObjectTest.cpp | 16 ++++++++-------- src/Shaders/FlatShader.h | 4 ++-- src/Shaders/VertexColorShader.h | 4 ++-- 27 files changed, 84 insertions(+), 84 deletions(-) diff --git a/src/Physics/AbstractShape.h b/src/Physics/AbstractShape.h index a8320aa0d..c4e6dff67 100644 --- a/src/Physics/AbstractShape.h +++ b/src/Physics/AbstractShape.h @@ -105,7 +105,7 @@ template class PHYSICS_EXPORT AbstractShape { * Applies transformation to user-defined shape properties and caches * them for later usage in collision detection. */ - virtual void applyTransformation(const typename DimensionTraits::MatrixType& transformation) = 0; + virtual void applyTransformation(const typename DimensionTraits::MatrixType& transformation) = 0; /** * @brief Detect collision with other shape diff --git a/src/Physics/AxisAlignedBox.cpp b/src/Physics/AxisAlignedBox.cpp index 63b288fcc..8b15efa27 100644 --- a/src/Physics/AxisAlignedBox.cpp +++ b/src/Physics/AxisAlignedBox.cpp @@ -20,8 +20,8 @@ namespace Magnum { namespace Physics { -template void AxisAlignedBox::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { - _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); +template void AxisAlignedBox::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { + _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); _transformedSize = transformation.rotationScaling()*_size; } diff --git a/src/Physics/AxisAlignedBox.h b/src/Physics/AxisAlignedBox.h index 711491575..2c00e8f35 100644 --- a/src/Physics/AxisAlignedBox.h +++ b/src/Physics/AxisAlignedBox.h @@ -34,44 +34,44 @@ namespace Magnum { namespace Physics { template class PHYSICS_EXPORT AxisAlignedBox: public AbstractShape { public: /** @brief Constructor */ - inline AxisAlignedBox(const typename DimensionTraits::VectorType& position, const typename DimensionTraits::VectorType& size): _position(position), _transformedPosition(position), _size(size), _transformedSize(size) {} + inline AxisAlignedBox(const typename DimensionTraits::VectorType& position, const typename DimensionTraits::VectorType& size): _position(position), _transformedPosition(position), _size(size), _transformedSize(size) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::AxisAlignedBox; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; /** @brief Position */ - inline typename DimensionTraits::VectorType position() const { + inline typename DimensionTraits::VectorType position() const { return _position; } /** @brief Set position */ - inline void setPosition(const typename DimensionTraits::VectorType& position) { + inline void setPosition(const typename DimensionTraits::VectorType& position) { _position = position; } /** @brief Size */ - inline typename DimensionTraits::VectorType size() const { return _size; } + inline typename DimensionTraits::VectorType size() const { return _size; } /** @brief Set size */ - inline void setSize(const typename DimensionTraits::VectorType& size) { + inline void setSize(const typename DimensionTraits::VectorType& size) { _size = size; } /** @brief Transformed position */ - inline typename DimensionTraits::VectorType transformedPosition() const { + inline typename DimensionTraits::VectorType transformedPosition() const { return _transformedPosition; } /** @brief Transformed size */ - inline typename DimensionTraits::VectorType transformedSize() const { + inline typename DimensionTraits::VectorType transformedSize() const { return _transformedSize; } private: - Math::Vector _position, _transformedPosition, + typename DimensionTraits::VectorType _position, _transformedPosition, _size, _transformedSize; }; diff --git a/src/Physics/Box.cpp b/src/Physics/Box.cpp index 2b0eb5725..e1ed39501 100644 --- a/src/Physics/Box.cpp +++ b/src/Physics/Box.cpp @@ -20,7 +20,7 @@ namespace Magnum { namespace Physics { -template void Box::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { +template void Box::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { _transformedTransformation = (transformation*_transformation); } diff --git a/src/Physics/Box.h b/src/Physics/Box.h index 81959172e..87f259a12 100644 --- a/src/Physics/Box.h +++ b/src/Physics/Box.h @@ -36,31 +36,31 @@ namespace Magnum { namespace Physics { template class PHYSICS_EXPORT Box: public AbstractShape { public: /** @brief Constructor */ - inline Box(const typename DimensionTraits::MatrixType& transformation): _transformation(transformation), _transformedTransformation(transformation) {} + inline Box(const typename DimensionTraits::MatrixType& transformation): _transformation(transformation), _transformedTransformation(transformation) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::Box; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; /** @brief Transformation */ - inline typename DimensionTraits::MatrixType transformation() const { + inline typename DimensionTraits::MatrixType transformation() const { return _transformation; } /** @brief Set transformation */ - inline void setTransformation(const typename DimensionTraits::MatrixType& transformation) { + inline void setTransformation(const typename DimensionTraits::MatrixType& transformation) { _transformation = transformation; } /** @brief Transformed transformation */ - inline typename DimensionTraits::MatrixType transformedTransformation() const { + inline typename DimensionTraits::MatrixType transformedTransformation() const { return _transformedTransformation; } private: - Math::Matrix _transformation, + typename DimensionTraits::MatrixType _transformation, _transformedTransformation; }; diff --git a/src/Physics/Capsule.cpp b/src/Physics/Capsule.cpp index 0c9c1b288..0c9a8882e 100644 --- a/src/Physics/Capsule.cpp +++ b/src/Physics/Capsule.cpp @@ -27,10 +27,10 @@ using namespace Magnum::Math::Geometry; namespace Magnum { namespace Physics { -template void Capsule::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { - _transformedA = (transformation*typename DimensionTraits::PointType(_a)).vector(); - _transformedB = (transformation*typename DimensionTraits::PointType(_b)).vector(); - float scaling = (transformation.rotationScaling()*typename DimensionTraits::VectorType(1/Math::Constants::sqrt3())).length(); +template void Capsule::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { + _transformedA = (transformation*typename DimensionTraits::PointType(_a)).vector(); + _transformedB = (transformation*typename DimensionTraits::PointType(_b)).vector(); + float scaling = (transformation.rotationScaling()*typename DimensionTraits::VectorType(1/Math::Constants::sqrt3())).length(); _transformedRadius = scaling*_radius; } diff --git a/src/Physics/Capsule.h b/src/Physics/Capsule.h index af8a19a36..3c5aad2d6 100644 --- a/src/Physics/Capsule.h +++ b/src/Physics/Capsule.h @@ -37,33 +37,33 @@ applying transformation, the scale factor is averaged from all axes. template class PHYSICS_EXPORT Capsule: public AbstractShape { public: /** @brief Constructor */ - inline Capsule(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b, float radius): _a(a), _transformedA(a), _b(b), _transformedB(b), _radius(radius), _transformedRadius(radius) {} + inline Capsule(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b, float radius): _a(a), _transformedA(a), _b(b), _transformedB(b), _radius(radius), _transformedRadius(radius) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::Capsule; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; bool collides(const AbstractShape* other) const override; /** @brief Start point */ - inline typename DimensionTraits::VectorType a() const { + inline typename DimensionTraits::VectorType a() const { return _a; } /** @brief End point */ - inline typename DimensionTraits::VectorType b() const { + inline typename DimensionTraits::VectorType b() const { return _a; } /** @brief Set start point */ - inline void setA(const typename DimensionTraits::VectorType& a) { + inline void setA(const typename DimensionTraits::VectorType& a) { _a = a; } /** @brief Set end point */ - inline void setB(const typename DimensionTraits::VectorType& b) { + inline void setB(const typename DimensionTraits::VectorType& b) { _b = b; } @@ -74,12 +74,12 @@ template class PHYSICS_EXPORT Capsule: public AbstractS inline void setRadius(float radius) { _radius = radius; } /** @brief Transformed first point */ - inline typename DimensionTraits::VectorType transformedA() const { + inline typename DimensionTraits::VectorType transformedA() const { return _transformedA; } /** @brief Transformed second point */ - inline typename DimensionTraits::VectorType transformedB() const { + inline typename DimensionTraits::VectorType transformedB() const { return _transformedB; } @@ -95,7 +95,7 @@ template class PHYSICS_EXPORT Capsule: public AbstractS bool operator%(const Sphere& other) const; private: - Math::Vector _a, _transformedA, + typename DimensionTraits::VectorType _a, _transformedA, _b, _transformedB; float _radius, _transformedRadius; }; diff --git a/src/Physics/Implementation/AbstractDebugRenderer.h b/src/Physics/Implementation/AbstractDebugRenderer.h index 0b3af89c2..3d699899b 100644 --- a/src/Physics/Implementation/AbstractDebugRenderer.h +++ b/src/Physics/Implementation/AbstractDebugRenderer.h @@ -38,7 +38,7 @@ template class AbstractDebugRenderer { virtual ~AbstractDebugRenderer(); - virtual void draw(Resource& options, const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) = 0; + virtual void draw(Resource& options, const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) = 0; protected: Resource> shader; diff --git a/src/Physics/Implementation/AbstractShapeRenderer.h b/src/Physics/Implementation/AbstractShapeRenderer.h index 276d53ba2..737e29895 100644 --- a/src/Physics/Implementation/AbstractShapeRenderer.h +++ b/src/Physics/Implementation/AbstractShapeRenderer.h @@ -38,7 +38,7 @@ template class AbstractShapeRenderer { virtual ~AbstractShapeRenderer(); - virtual void draw(Resource& options, const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) = 0; + virtual void draw(Resource& options, const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) = 0; protected: Resource> shader; diff --git a/src/Physics/Implementation/AxisAlignedBoxRenderer.cpp b/src/Physics/Implementation/AxisAlignedBoxRenderer.cpp index 57e701116..d53732742 100644 --- a/src/Physics/Implementation/AxisAlignedBoxRenderer.cpp +++ b/src/Physics/Implementation/AxisAlignedBoxRenderer.cpp @@ -22,7 +22,7 @@ namespace Magnum { namespace Physics { namespace Implementation { -template void AxisAlignedBoxRenderer::draw(Resource& options, const typename DimensionTraits::MatrixType&, typename SceneGraph::AbstractCamera* camera) { +template void AxisAlignedBoxRenderer::draw(Resource& options, const typename DimensionTraits::MatrixType&, typename SceneGraph::AbstractCamera* camera) { typename DimensionTraits::MatrixType transformation = DimensionTraits::MatrixType::translation(axisAlignedBox.transformedPosition())* DimensionTraits::MatrixType::scaling(axisAlignedBox.transformedSize()); diff --git a/src/Physics/Implementation/BoxRenderer.cpp b/src/Physics/Implementation/BoxRenderer.cpp index 1624e7aa3..ea4531324 100644 --- a/src/Physics/Implementation/BoxRenderer.cpp +++ b/src/Physics/Implementation/BoxRenderer.cpp @@ -22,7 +22,7 @@ namespace Magnum { namespace Physics { namespace Implementation { -template void BoxRenderer::draw(Resource& options, const typename DimensionTraits::MatrixType&, typename SceneGraph::AbstractCamera* camera) { +template void BoxRenderer::draw(Resource& options, const typename DimensionTraits::MatrixType&, typename SceneGraph::AbstractCamera* camera) { this->shader->setTransformationProjection(camera->projectionMatrix()*camera->cameraMatrix()*box.transformedTransformation()) ->setColor(options->color) ->use(); diff --git a/src/Physics/Implementation/BoxRenderer.h b/src/Physics/Implementation/BoxRenderer.h index c1e248478..4513155c1 100644 --- a/src/Physics/Implementation/BoxRenderer.h +++ b/src/Physics/Implementation/BoxRenderer.h @@ -27,7 +27,7 @@ template class BoxRenderer: public AbstractBoxRenderer< public: inline BoxRenderer(Box& box): box(box) {} - void draw(Resource& options, const typename DimensionTraits::MatrixType& transformation, typename SceneGraph::AbstractCamera* camera) override; + void draw(Resource& options, const typename DimensionTraits::MatrixType& transformation, typename SceneGraph::AbstractCamera* camera) override; private: Box& box; diff --git a/src/Physics/Implementation/DebugRenderer.h b/src/Physics/Implementation/DebugRenderer.h index fdb19e268..87e806392 100644 --- a/src/Physics/Implementation/DebugRenderer.h +++ b/src/Physics/Implementation/DebugRenderer.h @@ -44,7 +44,7 @@ template class DebugRenderer: public SceneGraph::Drawab renderers.push_back(renderer); } - inline void draw(const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) override { + inline void draw(const typename DimensionTraits::MatrixType& transformationMatrix, SceneGraph::AbstractCamera* camera) override { for(auto i: renderers) i->draw(options, transformationMatrix, camera); } diff --git a/src/Physics/Line.cpp b/src/Physics/Line.cpp index c067306c0..65533e3ef 100644 --- a/src/Physics/Line.cpp +++ b/src/Physics/Line.cpp @@ -20,9 +20,9 @@ namespace Magnum { namespace Physics { -template void Line::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { - _transformedA = (transformation*typename DimensionTraits::PointType(_a)).vector(); - _transformedB = (transformation*typename DimensionTraits::PointType(_b)).vector(); +template void Line::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { + _transformedA = (transformation*typename DimensionTraits::PointType(_a)).vector(); + _transformedB = (transformation*typename DimensionTraits::PointType(_b)).vector(); } /* Explicitly instantiate the templates */ diff --git a/src/Physics/Line.h b/src/Physics/Line.h index 39cb70363..df509d87d 100644 --- a/src/Physics/Line.h +++ b/src/Physics/Line.h @@ -35,46 +35,46 @@ namespace Magnum { namespace Physics { template class PHYSICS_EXPORT Line: public AbstractShape { public: /** @brief Constructor */ - inline Line(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b): _a(a), _transformedA(a), _b(b), _transformedB(b) {} + inline Line(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b): _a(a), _transformedA(a), _b(b), _transformedB(b) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::Line; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; /** @brief First point */ - inline typename DimensionTraits::VectorType a() const { + inline typename DimensionTraits::VectorType a() const { return _a; } /** @brief Second point */ - inline typename DimensionTraits::VectorType b() const { + inline typename DimensionTraits::VectorType b() const { return _a; } /** @brief Set first point */ - inline void setA(const typename DimensionTraits::VectorType& a) { + inline void setA(const typename DimensionTraits::VectorType& a) { _a = a; } /** @brief Set second point */ - inline void setB(const typename DimensionTraits::VectorType& b) { + inline void setB(const typename DimensionTraits::VectorType& b) { _b = b; } /** @brief Transformed first point */ - inline typename DimensionTraits::VectorType transformedA() const { + inline typename DimensionTraits::VectorType transformedA() const { return _transformedA; } /** @brief Transformed second point */ - inline typename DimensionTraits::VectorType transformedB() const { + inline typename DimensionTraits::VectorType transformedB() const { return _transformedB; } private: - Math::Vector _a, _transformedA, + typename DimensionTraits::VectorType _a, _transformedA, _b, _transformedB; }; diff --git a/src/Physics/LineSegment.h b/src/Physics/LineSegment.h index 8c0d00242..4ed4b9449 100644 --- a/src/Physics/LineSegment.h +++ b/src/Physics/LineSegment.h @@ -31,7 +31,7 @@ namespace Magnum { namespace Physics { template class LineSegment: public Line { public: /** @brief Constructor */ - inline LineSegment(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b): Line(a, b) {} + inline LineSegment(const typename DimensionTraits::VectorType& a, const typename DimensionTraits::VectorType& b): Line(a, b) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::LineSegment; diff --git a/src/Physics/ObjectShape.cpp b/src/Physics/ObjectShape.cpp index 4ce8e4ce7..446433d5a 100644 --- a/src/Physics/ObjectShape.cpp +++ b/src/Physics/ObjectShape.cpp @@ -36,7 +36,7 @@ template void ObjectShape::markDirty() { group()->setDirty(); } -template void ObjectShape::clean(const typename DimensionTraits::MatrixType& absoluteTransformation) { +template void ObjectShape::clean(const typename DimensionTraits::MatrixType& absoluteTransformation) { if(_shape) _shape->applyTransformation(absoluteTransformation); } diff --git a/src/Physics/Plane.h b/src/Physics/Plane.h index 2397aa2e2..253e41484 100644 --- a/src/Physics/Plane.h +++ b/src/Physics/Plane.h @@ -39,7 +39,7 @@ class PHYSICS_EXPORT Plane: public AbstractShape<3> { void applyTransformation(const Matrix4& transformation) override; bool collides(const AbstractShape<3>* other) const override; #else - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; bool collides(const AbstractShape* other) const override; #endif diff --git a/src/Physics/Point.cpp b/src/Physics/Point.cpp index 6ca6df6f4..06850fd68 100644 --- a/src/Physics/Point.cpp +++ b/src/Physics/Point.cpp @@ -20,8 +20,8 @@ namespace Magnum { namespace Physics { -template void Point::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { - _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); +template void Point::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { + _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); } template class Point<2>; diff --git a/src/Physics/Point.h b/src/Physics/Point.h index 142b315e0..a228173f9 100644 --- a/src/Physics/Point.h +++ b/src/Physics/Point.h @@ -34,31 +34,31 @@ namespace Magnum { namespace Physics { template class PHYSICS_EXPORT Point: public AbstractShape { public: /** @brief Constructor */ - inline Point(const typename DimensionTraits::VectorType& position): _position(position), _transformedPosition(position) {} + inline Point(const typename DimensionTraits::VectorType& position): _position(position), _transformedPosition(position) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::Point; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; /** @brief Position */ - inline typename DimensionTraits::VectorType position() const { + inline typename DimensionTraits::VectorType position() const { return _position; } /** @brief Set position */ - inline void setPosition(const typename DimensionTraits::VectorType& position) { + inline void setPosition(const typename DimensionTraits::VectorType& position) { _position = position; } /** @brief Transformed position */ - inline typename DimensionTraits::VectorType transformedPosition() const { + inline typename DimensionTraits::VectorType transformedPosition() const { return _transformedPosition; } private: - Math::Vector _position, _transformedPosition; + typename DimensionTraits::VectorType _position, _transformedPosition; }; /** @brief Two-dimensional point */ diff --git a/src/Physics/ShapeGroup.cpp b/src/Physics/ShapeGroup.cpp index 83a5f7178..3352a2664 100644 --- a/src/Physics/ShapeGroup.cpp +++ b/src/Physics/ShapeGroup.cpp @@ -43,7 +43,7 @@ template ShapeGroup& ShapeGroup return *this; } -template void ShapeGroup::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { +template void ShapeGroup::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { if(a) a->applyTransformation(transformation); if(b) b->applyTransformation(transformation); } diff --git a/src/Physics/ShapeGroup.h b/src/Physics/ShapeGroup.h index 8a3533e84..04992413d 100644 --- a/src/Physics/ShapeGroup.h +++ b/src/Physics/ShapeGroup.h @@ -105,7 +105,7 @@ template class PHYSICS_EXPORT ShapeGroup: public Abstra return AbstractShape::Type::ShapeGroup; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; bool collides(const AbstractShape* other) const override; diff --git a/src/Physics/Sphere.cpp b/src/Physics/Sphere.cpp index b0f578871..91caac41d 100644 --- a/src/Physics/Sphere.cpp +++ b/src/Physics/Sphere.cpp @@ -28,7 +28,7 @@ using namespace Magnum::Math::Geometry; namespace Magnum { namespace Physics { namespace { - template static typename DimensionTraits::VectorType unitVector(); + template static typename DimensionTraits::VectorType unitVector(); template<> inline Vector2 unitVector<2>() { return Vector2(1/Math::Constants::sqrt2()); @@ -39,8 +39,8 @@ namespace { } } -template void Sphere::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { - _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); +template void Sphere::applyTransformation(const typename DimensionTraits::MatrixType& transformation) { + _transformedPosition = (transformation*typename DimensionTraits::PointType(_position)).vector(); float scaling = (transformation.rotationScaling()*unitVector()).length(); _transformedRadius = scaling*_radius; } diff --git a/src/Physics/Sphere.h b/src/Physics/Sphere.h index 1fd8cc378..f77cf8415 100644 --- a/src/Physics/Sphere.h +++ b/src/Physics/Sphere.h @@ -37,23 +37,23 @@ applying transformation, the scale factor is averaged from all axes. template class PHYSICS_EXPORT Sphere: public AbstractShape { public: /** @brief Constructor */ - inline Sphere(const typename DimensionTraits::VectorType& position, float radius): _position(position), _transformedPosition(position), _radius(radius), _transformedRadius(radius) {} + inline Sphere(const typename DimensionTraits::VectorType& position, float radius): _position(position), _transformedPosition(position), _radius(radius), _transformedRadius(radius) {} inline typename AbstractShape::Type type() const override { return AbstractShape::Type::Sphere; } - void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; + void applyTransformation(const typename DimensionTraits::MatrixType& transformation) override; bool collides(const AbstractShape* other) const override; /** @brief Position */ - inline typename DimensionTraits::VectorType position() const { + inline typename DimensionTraits::VectorType position() const { return _position; } /** @brief Set position */ - inline void setPosition(const typename DimensionTraits::VectorType& position) { + inline void setPosition(const typename DimensionTraits::VectorType& position) { _position = position; } @@ -64,7 +64,7 @@ template class PHYSICS_EXPORT Sphere: public AbstractSh inline void setRadius(float radius) { _radius = radius; } /** @brief Transformed position */ - inline typename DimensionTraits::VectorType transformedPosition() const { + inline typename DimensionTraits::VectorType transformedPosition() const { return _transformedPosition; } @@ -86,7 +86,7 @@ template class PHYSICS_EXPORT Sphere: public AbstractSh bool operator%(const Sphere& other) const; private: - Math::Vector _position, + typename DimensionTraits::VectorType _position, _transformedPosition; float _radius, _transformedRadius; }; diff --git a/src/SceneGraph/Test/ObjectTest.cpp b/src/SceneGraph/Test/ObjectTest.cpp index 376f859b3..abe60f4c7 100644 --- a/src/SceneGraph/Test/ObjectTest.cpp +++ b/src/SceneGraph/Test/ObjectTest.cpp @@ -27,12 +27,12 @@ CORRADE_TEST_MAIN(Magnum::SceneGraph::Test::ObjectTest) namespace Magnum { namespace SceneGraph { namespace Test { -typedef SceneGraph::Object> Object3D; -typedef SceneGraph::Scene> Scene3D; +typedef SceneGraph::Object> Object3D; +typedef SceneGraph::Scene> Scene3D; -class CachingObject: public Object3D, AbstractFeature<3, GLfloat> { +class CachingObject: public Object3D, AbstractFeature<3> { public: - inline CachingObject(Object3D* parent = nullptr): Object3D(parent), AbstractFeature<3, GLfloat>(this) { + inline CachingObject(Object3D* parent = nullptr): Object3D(parent), AbstractFeature<3>(this) { setCachedTransformations(CachedTransformation::Absolute); } @@ -189,9 +189,9 @@ void ObjectTest::transformations() { void ObjectTest::setClean() { Scene3D scene; - class CachingFeature: public AbstractFeature<3, GLfloat> { + class CachingFeature: public AbstractFeature<3> { public: - CachingFeature(AbstractObject<3, GLfloat>* object): AbstractFeature<3, GLfloat>(object) { + CachingFeature(AbstractObject<3>* object): AbstractFeature<3>(object) { setCachedTransformations(CachedTransformation::Absolute); } @@ -202,9 +202,9 @@ void ObjectTest::setClean() { } }; - class CachingInvertedFeature: public AbstractFeature<3, GLfloat> { + class CachingInvertedFeature: public AbstractFeature<3> { public: - CachingInvertedFeature(AbstractObject<3, GLfloat>* object): AbstractFeature<3, GLfloat>(object) { + CachingInvertedFeature(AbstractObject<3>* object): AbstractFeature<3>(object) { setCachedTransformations(CachedTransformation::InvertedAbsolute); } diff --git a/src/Shaders/FlatShader.h b/src/Shaders/FlatShader.h index bbdca99e5..af839d760 100644 --- a/src/Shaders/FlatShader.h +++ b/src/Shaders/FlatShader.h @@ -38,7 +38,7 @@ Draws whole mesh with one color. template class SHADERS_EXPORT FlatShader: public AbstractShaderProgram { public: /** @brief Vertex position */ - typedef Attribute<0, typename DimensionTraits::PointType> Position; + typedef Attribute<0, typename DimensionTraits::PointType> Position; FlatShader(); @@ -46,7 +46,7 @@ template class SHADERS_EXPORT FlatShader: public Abstra * @brief Set transformation and projection matrix * @return Pointer to self (for method chaining) */ - FlatShader* setTransformationProjection(const typename DimensionTraits::MatrixType& matrix) { + FlatShader* setTransformationProjection(const typename DimensionTraits::MatrixType& matrix) { setUniform(transformationProjectionUniform, matrix); return this; } diff --git a/src/Shaders/VertexColorShader.h b/src/Shaders/VertexColorShader.h index 1c68a147a..437e1a7ed 100644 --- a/src/Shaders/VertexColorShader.h +++ b/src/Shaders/VertexColorShader.h @@ -38,7 +38,7 @@ Draws vertex-colored mesh. template class SHADERS_EXPORT VertexColorShader: public AbstractShaderProgram { public: /** @brief Vertex position */ - typedef Attribute<0, typename DimensionTraits::PointType> Position; + typedef Attribute<0, typename DimensionTraits::PointType> Position; /** @brief Vertex color */ typedef Attribute<1, Color3> Color; @@ -49,7 +49,7 @@ template class SHADERS_EXPORT VertexColorShader: public * @brief Set transformation and projection * @return Pointer to self (for method chaining) */ - inline VertexColorShader* setTransformationProjection(const typename DimensionTraits::MatrixType& matrix) { + inline VertexColorShader* setTransformationProjection(const typename DimensionTraits::MatrixType& matrix) { setUniform(transformationProjectionUniform, matrix); return this; }