diff --git a/OMEdit/OMEditLIB/Animation/AbstractVisualizer.cpp b/OMEdit/OMEditLIB/Animation/AbstractVisualizer.cpp index 636b9764dca..b299f1d6468 100644 --- a/OMEdit/OMEditLIB/Animation/AbstractVisualizer.cpp +++ b/OMEdit/OMEditLIB/Animation/AbstractVisualizer.cpp @@ -104,53 +104,29 @@ std::string VisualizerAttribute::getValueString() const } template -AbstractVisualProperties::Color::Type VisualProperties::Color::getDefault() const -{ - return QColor(0.0, 0.0, 0.0, 0.0); -} - -template -AbstractVisualProperties::Specular::Type VisualProperties::Specular::getDefault() const -{ - return 0.7; -} - -template -AbstractVisualProperties::Transparency::Type VisualProperties::Transparency::getDefault() const -{ - return 0.0; -} - -template -AbstractVisualProperties::TextureImagePath::Type VisualProperties::TextureImagePath::getDefault() const -{ - return ""; -} - -template -AbstractVisualProperties::Color::Type VisualProperties::Color::get() const +AbstractVisualProperties::Color::Type VisualProperties::Color::getProperty() const { const VisualizerObject* visualizer = static_cast(mpParent); - return mCustom ? mProperty : QColor(visualizer->_color[0].exp, visualizer->_color[1].exp, visualizer->_color[2].exp); + return QColor(visualizer->_color[0].exp, visualizer->_color[1].exp, visualizer->_color[2].exp); } template -AbstractVisualProperties::Specular::Type VisualProperties::Specular::get() const +AbstractVisualProperties::Specular::Type VisualProperties::Specular::getProperty() const { const VisualizerObject* visualizer = static_cast(mpParent); - return mCustom ? mProperty : visualizer->_specCoeff.exp; + return visualizer->_specCoeff.exp; } template -AbstractVisualProperties::Transparency::Type VisualProperties::Transparency::get() const +AbstractVisualProperties::Transparency::Type VisualProperties::Transparency::getProperty() const { - return AbstractVisualProperties::Transparency::get(); + return 0.0; } template -AbstractVisualProperties::TextureImagePath::Type VisualProperties::TextureImagePath::get() const +AbstractVisualProperties::TextureImagePath::Type VisualProperties::TextureImagePath::getProperty() const { - return AbstractVisualProperties::TextureImagePath::get(); + return ""; } AbstractVisualizerObject::AbstractVisualizerObject(const VisualizerType type) diff --git a/OMEdit/OMEditLIB/Animation/AbstractVisualizer.h b/OMEdit/OMEditLIB/Animation/AbstractVisualizer.h index 4381b8c2d9c..c66814c3200 100644 --- a/OMEdit/OMEditLIB/Animation/AbstractVisualizer.h +++ b/OMEdit/OMEditLIB/Animation/AbstractVisualizer.h @@ -107,15 +107,16 @@ class VisualProperty VisualProperty() {reset();} virtual ~VisualProperty() = default; protected: - virtual Type getDefault() const {return Type();} + virtual Type getProperty() const {return mProperty;} public: virtual bool custom() const {return mCustom;} - virtual Type get() const {return mCustom ? mProperty : getDefault();} - virtual void reset() {mCustom = false, mProperty = getDefault();} + virtual Type get() const {return mCustom ? mProperty : getProperty();} virtual void set(const Type& rProperty) {mCustom = true, mProperty = rProperty;} + virtual void reset() {mCustom = false, mProperty = Type();} virtual void parent(const AbstractVisualProperties* pParent) final {mpParent = pParent;} protected: const AbstractVisualProperties* mpParent; +private: Type mProperty; bool mCustom; }; @@ -141,17 +142,13 @@ class VisualProperties : public AbstractVisualProperties { private: class Color final : public AbstractVisualProperties::Color - { protected: virtual Type getDefault() const override final; - public: virtual Type get() const override final; }; + { protected: virtual Type getProperty() const override final; }; class Specular final : public AbstractVisualProperties::Specular - { protected: virtual Type getDefault() const override final; - public: virtual Type get() const override final; }; + { protected: virtual Type getProperty() const override final; }; class Transparency final : public AbstractVisualProperties::Transparency - { protected: virtual Type getDefault() const override final; - public: virtual Type get() const override final; }; + { protected: virtual Type getProperty() const override final; }; class TextureImagePath final : public AbstractVisualProperties::TextureImagePath - { protected: virtual Type getDefault() const override final; - public: virtual Type get() const override final; }; + { protected: virtual Type getProperty() const override final; }; public: VisualProperties() noexcept { diff --git a/OMEdit/OMEditLIB/Animation/Visualization.cpp b/OMEdit/OMEditLIB/Animation/Visualization.cpp index 6c075cfce0f..91200e06823 100644 --- a/OMEdit/OMEditLIB/Animation/Visualization.cpp +++ b/OMEdit/OMEditLIB/Animation/Visualization.cpp @@ -1629,6 +1629,8 @@ void UpdateVisitor::apply(osg::Geode& node) }//end switch action if (changeMaterial || changeTexture) { + AbstractVisualProperties* visualProperties = _visualizer->getVisualProperties(); + osg::ref_ptr stateSet = nullptr; bool geometryColors = false; bool is3DSShape = false; @@ -1641,7 +1643,7 @@ void UpdateVisitor::apply(osg::Geode& node) osg::ref_ptr cad = dynamic_cast(transformNode->getChild(0)); if (cad.valid()) { stateSet = cad->getOrCreateStateSet(); - geometryColors = !shape->getVisualProperties()->getColor().custom(); + geometryColors = !visualProperties->getColor().custom(); is3DSShape = is3DSType(shape->_type); } } @@ -1651,7 +1653,6 @@ void UpdateVisitor::apply(osg::Geode& node) osg::ref_ptr ss = stateSet.valid() ? stateSet.get() : node.getOrCreateStateSet(); osg::Material::ColorMode mode = geometryColors ? osg::Material::AMBIENT_AND_DIFFUSE : osg::Material::OFF; - AbstractVisualProperties* visualProperties = _visualizer->getVisualProperties(); QColor color = visualProperties->getColor().get(); float specular = visualProperties->getSpecular().get(); float transparency = visualProperties->getTransparency().get();