#include <Magnum/SceneGraph/AbstractObject.h>
template<UnsignedInt dimensions, class T>
AbstractObject class
Base for objects.
Provides minimal interface for features, not depending on object transformation implementation. This class is not directly instantiatable, use Object subclass instead. See also Using the scene graph for more information.
Uses Corrade::
for(SceneGraph::AbstractFeature3D& feature: object.features()) { …; }
Or, if you need more flexibility, like in the following code. It is also possible to go in reverse order using Corrade::
for(SceneGraph::AbstractFeature3D* feature = object.features().first(); feature; feature = feature->nextFeature()) { … }
Explicit template specializations
The following specializations are explicitly compiled into SceneGraph library. For other specializations (e.g. using Double type) you have to use Object.hpp implementation file to avoid linker errors. See also relevant sections in Object and AbstractTransformation class documentation or Template headers and implementation files for more information.
Public types
- enum (anonymous): UnsignedInt { Dimensions = dimensions new in 2019.10 }
- using Type = T new in 2019.10
- Transformation underlying type.
- using MatrixType = MatrixTypeFor<dimensions, T>
- Matrix type.
- using FeatureType = AbstractFeature<dimensions, T>
- Feature type.
Constructors, destructors, conversion operators
- AbstractObject() explicit
- Constructor.
- ~AbstractObject() virtual
- Destructor.
Public functions
-
auto features() -> Containers::
LinkedList<AbstractFeature<dimensions, T>>& - Object features.
-
auto features() const -> const Containers::
LinkedList<AbstractFeature<dimensions, T>>& -
template<class U, class ... Args>auto addFeature(Args && ... args) -> U&
- Add a feature.
- auto scene() -> AbstractObject<dimensions, T>*
- Scene.
- auto scene() const -> const AbstractObject<dimensions, T>*
- auto parent() -> AbstractObject<dimensions, T>*
- Parent object or
nullptr
, if this is root object. - auto parent() const -> const AbstractObject<dimensions, T>*
Object transformation
- auto transformationMatrix() const -> MatrixType
- Transformation matrix.
- auto absoluteTransformationMatrix() const -> MatrixType
- Transformation matrix relative to root object.
-
auto transformationMatrices(const std::
vector<std:: reference_wrapper<AbstractObject<dimensions, T>>>& objects, const MatrixType& finalTransformationMatrix = MatrixType()) const -> std:: vector<MatrixType> - Transformation matrices of given set of objects relative to this object.
Transformation caching
See Transformation caching in features for more information.
- auto isDirty() const -> bool
- Whether absolute transformation is dirty.
- void setDirty()
- Set object absolute transformation as dirty.
- void setClean()
- Clean object absolute transformation.
-
static void setClean(const std::
vector<std:: reference_wrapper<AbstractObject<dimensions, T>>>& objects) - Clean absolute transformations of given set of objects.
Enum documentation
template<UnsignedInt dimensions, class T>
enum Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: (anonymous): UnsignedInt
Enumerators | |
---|---|
Dimensions new in 2019.10 |
Dimension count |
Function documentation
template<UnsignedInt dimensions, class T>
Containers:: LinkedList<AbstractFeature<dimensions, T>>& Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: features()
Object features.
template<UnsignedInt dimensions, class T>
const Containers:: LinkedList<AbstractFeature<dimensions, T>>& Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: features() const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<UnsignedInt dimensions, class T>
template<class U, class ... Args>
U& Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: addFeature(Args && ... args)
Add a feature.
Calling object.addFeature<MyFeature>(args...)
is equivalent to new MyFeature{object, args...}
.
template<UnsignedInt dimensions, class T>
AbstractObject<dimensions, T>* Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: scene()
Scene.
Returns | Scene or nullptr , if the object is not part of any scene. |
---|
template<UnsignedInt dimensions, class T>
const AbstractObject<dimensions, T>* Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: scene() const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<UnsignedInt dimensions, class T>
const AbstractObject<dimensions, T>* Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: parent() const
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
template<UnsignedInt dimensions, class T>
MatrixType Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: transformationMatrix() const
Transformation matrix.
See also transformation()
function of various transformation classes.
template<UnsignedInt dimensions, class T>
MatrixType Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: absoluteTransformationMatrix() const
Transformation matrix relative to root object.
template<UnsignedInt dimensions, class T>
std:: vector<MatrixType> Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: transformationMatrices(const std:: vector<std:: reference_wrapper<AbstractObject<dimensions, T>>>& objects,
const MatrixType& finalTransformationMatrix = MatrixType()) const
Transformation matrices of given set of objects relative to this object.
All transformations are post-multiplied with finalTransformationMatrix
, if specified (it gets applied on the left-most side, suitable for example for an inverse camera transformation or a projection matrix).
template<UnsignedInt dimensions, class T>
bool Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: isDirty() const
Whether absolute transformation is dirty.
Returns true
if transformation of the object or any parent has changed since last call to setClean(), false
otherwise. All objects are dirty by default.
template<UnsignedInt dimensions, class T>
void Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: setDirty()
Set object absolute transformation as dirty.
Calls AbstractFeature::
template<UnsignedInt dimensions, class T>
void Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: setClean()
Clean object absolute transformation.
Calls AbstractFeature::
See also setClean(const std::
template<UnsignedInt dimensions, class T>
static void Magnum:: SceneGraph:: AbstractObject<dimensions, T>:: setClean(const std:: vector<std:: reference_wrapper<AbstractObject<dimensions, T>>>& objects)
Clean absolute transformations of given set of objects.
Only dirty objects in the list are cleaned.