//################################################################################################## // // Custom Visualization Core library // Copyright (C) 2011-2012 Ceetron AS // // This library is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This library 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 General Public License at <> // for more details. // //################################################################################################## #pragma once #include "cvfMatrix4.h" #include "cvfCollection.h" #include "cvfCamera.h" namespace cvf { //================================================================================================== // // Transformation for use in a Part // //================================================================================================== class Transform : public Object { public: Transform(); virtual ~Transform(); virtual void updateWorldTransform(const cvf::Camera* camera); // camera optional, not used in base void addChild(Transform* transform); void removeAllChildren(); size_t childCount() const; Transform* child(size_t index); const Transform* child(size_t index) const; void setLocalTransform(const Mat4d& transform); // setter world og local const Mat4d& localTransform() const; const Mat4d& worldTransform() const; void setEyeLiftFactor(double eyeLiftFactor); double eyeLiftFactor() const; protected: Transform* m_parent; Collection m_children; Mat4d m_localMatrix; Mat4d m_worldMatrix; double m_eyeLiftFactor; // Lift the part towards the eye. A factor of 0 does no lifting. }; }