/* Copyright © 2010, 2011, 2012 Vladimír Vondruš This file is part of Magnum. Magnum is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License version 3 only, as published by the Free Software Foundation. Magnum is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License version 3 for more details. */ #include "ObjectShape.h" #include #include "AbstractShape.h" #include "ObjectShapeGroup.h" namespace Magnum { namespace Physics { template ObjectShape::ObjectShape(SceneGraph::AbstractObject* object, ObjectShapeGroup* group): SceneGraph::AbstractGroupedFeature>(object, group), _shape(nullptr) { this->setCachedTransformations(SceneGraph::AbstractFeature::CachedTransformation::Absolute); } template ObjectShape::~ObjectShape() { delete _shape; } template ObjectShapeGroup* ObjectShape::group() { return static_cast*>(SceneGraph::AbstractGroupedFeature>::group()); } template const ObjectShapeGroup* ObjectShape::group() const { return static_cast*>(SceneGraph::AbstractGroupedFeature>::group()); } template void ObjectShape::markDirty() { group()->setDirty(); } template void ObjectShape::clean(const typename DimensionTraits::MatrixType& absoluteTransformationMatrix) { if(_shape) _shape->applyTransformationMatrix(absoluteTransformationMatrix); } template class ObjectShape<2>; template class ObjectShape<3>; }}