Break out material handling into dedicated class.
This commit is contained in:
parent
fc44c4c623
commit
73051a5f27
17 changed files with 221 additions and 153 deletions
|
@ -55,16 +55,7 @@ void GeometryNode::updateMaterial()
|
|||
return;
|
||||
}
|
||||
|
||||
if (mHasFillColor)
|
||||
{
|
||||
mBackgroundItem->setFillColor(mFillColor);
|
||||
}
|
||||
|
||||
if (mHasStrokeColor && mStrokeThickness > 0)
|
||||
{
|
||||
mBackgroundItem->setOutlineColor(mStrokeColor);
|
||||
mBackgroundItem->setOutlineThickness(mStrokeThickness);
|
||||
}
|
||||
mBackgroundItem->updateSolidMaterial(*mMaterial);
|
||||
}
|
||||
|
||||
void GeometryNode::update(SceneInfo* sceneInfo)
|
||||
|
|
|
@ -137,7 +137,7 @@ void GridNode::update(SceneInfo*)
|
|||
|
||||
if (mMaterialIsDirty)
|
||||
{
|
||||
mOutlineModel->setFillColor(mStrokeColor);
|
||||
mOutlineModel->updateSolidMaterial(*mMaterial);
|
||||
mMaterialIsDirty = false;
|
||||
}
|
||||
|
||||
|
|
|
@ -2,8 +2,7 @@
|
|||
|
||||
MaterialNode::MaterialNode(const Transform& transform)
|
||||
: AbstractVisualNode(transform),
|
||||
mFillColor(Color(255, 255, 255)),
|
||||
mStrokeColor(Color(0, 0, 0))
|
||||
mMaterial(std::make_unique<BasicMaterial>())
|
||||
{
|
||||
|
||||
}
|
||||
|
@ -13,52 +12,27 @@ MaterialNode::~MaterialNode()
|
|||
|
||||
}
|
||||
|
||||
const Color& MaterialNode::getFillColor() const
|
||||
const BasicMaterial* MaterialNode::getMaterial() const
|
||||
{
|
||||
return mFillColor;
|
||||
}
|
||||
|
||||
const Color& MaterialNode::getStrokeColor() const
|
||||
{
|
||||
return mStrokeColor;
|
||||
return mMaterial.get();
|
||||
}
|
||||
|
||||
void MaterialNode::setHasStrokeColor(bool hasStroke)
|
||||
{
|
||||
if (mHasStrokeColor != hasStroke)
|
||||
{
|
||||
mHasStrokeColor = hasStroke;
|
||||
mMaterialIsDirty = true;
|
||||
}
|
||||
mMaterialIsDirty = mMaterial->setHasStrokeColor(hasStroke);
|
||||
}
|
||||
|
||||
void MaterialNode::setHasFillColor(bool hasFill)
|
||||
{
|
||||
if (mHasFillColor != hasFill)
|
||||
{
|
||||
mHasFillColor = hasFill;
|
||||
mMaterialIsDirty = true;
|
||||
}
|
||||
mMaterialIsDirty = mMaterial->setHasFillColor(hasFill);
|
||||
}
|
||||
|
||||
void MaterialNode::setFillColor(const Color& color)
|
||||
{
|
||||
mHasFillColor = true;
|
||||
|
||||
if (mFillColor != color)
|
||||
{
|
||||
mMaterialIsDirty = true;
|
||||
mFillColor = color;
|
||||
}
|
||||
mMaterialIsDirty = mMaterial->setFillColor(color);
|
||||
}
|
||||
|
||||
void MaterialNode::setStrokeColor(const Color& color)
|
||||
void MaterialNode::setStrokeColor(const Color& color)
|
||||
{
|
||||
mHasStrokeColor = true;
|
||||
|
||||
if (mStrokeColor != color)
|
||||
{
|
||||
mMaterialIsDirty = true;
|
||||
mStrokeColor = color;
|
||||
}
|
||||
mMaterialIsDirty = mMaterial->setStrokeColor(color);
|
||||
}
|
||||
|
|
|
@ -1,8 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "AbstractVisualNode.h"
|
||||
|
||||
#include "Color.h"
|
||||
#include "BasicMaterial.h"
|
||||
|
||||
class MaterialNode : public AbstractVisualNode
|
||||
{
|
||||
|
@ -10,20 +9,14 @@ public:
|
|||
MaterialNode(const Transform& transform);
|
||||
virtual ~MaterialNode();
|
||||
|
||||
const Color& getFillColor() const;
|
||||
const Color& getStrokeColor() const;
|
||||
const BasicMaterial* getMaterial() const;
|
||||
|
||||
void setHasStrokeColor(bool hasStroke);
|
||||
void setHasFillColor(bool hasFill);
|
||||
|
||||
void setFillColor(const Color& color);
|
||||
void setStrokeColor(const Color& color);
|
||||
|
||||
protected:
|
||||
bool mHasFillColor{ false };
|
||||
bool mHasStrokeColor{ true };
|
||||
|
||||
Color mFillColor;
|
||||
Color mStrokeColor;
|
||||
std::unique_ptr<BasicMaterial> mMaterial;
|
||||
bool mMaterialIsDirty{true};
|
||||
};
|
||||
|
|
|
@ -88,7 +88,7 @@ void MeshNode::update(SceneInfo*)
|
|||
|
||||
if (mMaterialIsDirty)
|
||||
{
|
||||
mModel->setFillColor(mFillColor);
|
||||
mModel->updateSolidMaterial(*mMaterial);
|
||||
mMaterialIsDirty = false;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -175,7 +175,7 @@ void TextNode::update(SceneInfo* sceneInfo)
|
|||
|
||||
if (mMaterialIsDirty)
|
||||
{
|
||||
mTextItem->setFillColor(mFillColor);
|
||||
mTextItem->updateSolidMaterial(*mMaterial);
|
||||
mMaterialIsDirty = false;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue