feat: use XYZ parameter for grid size parameter
This commit is contained in:
@@ -66,6 +66,12 @@ enzo::bt::String enzo::prm::Parameter::evalString(unsigned int index) const
|
|||||||
return stringValues_[index];
|
return stringValues_[index];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
unsigned int enzo::prm::Parameter::getVectorSize() const
|
||||||
|
{
|
||||||
|
return template_.getSize();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
const enzo::prm::Template& enzo::prm::Parameter::getTemplate()
|
const enzo::prm::Template& enzo::prm::Parameter::getTemplate()
|
||||||
{
|
{
|
||||||
return template_;
|
return template_;
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ public:
|
|||||||
Parameter(Template prmTemplate);
|
Parameter(Template prmTemplate);
|
||||||
std::string getName() const;
|
std::string getName() const;
|
||||||
enzo::prm::Type getType() const;
|
enzo::prm::Type getType() const;
|
||||||
|
unsigned int getVectorSize() const;
|
||||||
|
|
||||||
bt::floatT evalFloat(unsigned int index=0) const;
|
bt::floatT evalFloat(unsigned int index=0) const;
|
||||||
bt::String evalString(unsigned int index=0) const;
|
bt::String evalString(unsigned int index=0) const;
|
||||||
|
|||||||
@@ -2,31 +2,43 @@
|
|||||||
#include "Engine/Parameter/Default.h"
|
#include "Engine/Parameter/Default.h"
|
||||||
#include "Engine/Parameter/Range.h"
|
#include "Engine/Parameter/Range.h"
|
||||||
#include "Engine/Parameter/Type.h"
|
#include "Engine/Parameter/Type.h"
|
||||||
|
#include <icecream.hpp>
|
||||||
|
|
||||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name)
|
enzo::prm::Template::Template(enzo::prm::Type type, const char* name)
|
||||||
: Template(type, name, prm::Default())
|
: Template(type, name, prm::Default())
|
||||||
{
|
{
|
||||||
|
ranges_.resize(vectorSize_);
|
||||||
}
|
}
|
||||||
|
|
||||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, unsigned int vectorSize)
|
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, unsigned int vectorSize)
|
||||||
: Template(type, name, prm::Default(), vectorSize)
|
: Template(type, name, prm::Default(), vectorSize)
|
||||||
{
|
{
|
||||||
|
ranges_.resize(vectorSize_);
|
||||||
}
|
}
|
||||||
|
|
||||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, std::vector<prm::Default> defaults, unsigned int vectorSize, std::vector<prm::Range> ranges)
|
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, std::vector<prm::Default> defaults, unsigned int vectorSize, std::vector<prm::Range> ranges)
|
||||||
: type_{type}, name_{name}, defaults_{defaults}, vectorSize_(vectorSize)
|
: type_{type}, name_{name}, defaults_{defaults}, vectorSize_(vectorSize)
|
||||||
{
|
{
|
||||||
ranges.resize(vectorSize);
|
if(ranges.size()<vectorSize_)
|
||||||
|
{
|
||||||
|
if(ranges.size()>=1)
|
||||||
|
{
|
||||||
|
ranges.resize(vectorSize_, ranges[0]);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
ranges.resize(vectorSize_);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
ranges_ = ranges;
|
ranges_ = ranges;
|
||||||
}
|
}
|
||||||
|
|
||||||
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, prm::Default theDefault, unsigned int vectorSize, Range range)
|
enzo::prm::Template::Template(enzo::prm::Type type, const char* name, prm::Default theDefault, unsigned int vectorSize, Range range)
|
||||||
: type_{type}, name_{name}, vectorSize_(vectorSize)
|
: type_{type}, name_{name}, vectorSize_(vectorSize)
|
||||||
{
|
{
|
||||||
defaults_.push_back(theDefault);
|
defaults_.resize(vectorSize_, theDefault);
|
||||||
ranges_.push_back(range);
|
ranges_.resize(vectorSize_, range);
|
||||||
}
|
}
|
||||||
|
|
||||||
enzo::prm::Template::Template()
|
enzo::prm::Template::Template()
|
||||||
|
|||||||
@@ -38,7 +38,7 @@ enzo::ui::FloatSliderParm::FloatSliderParm(std::weak_ptr<prm::Parameter> paramet
|
|||||||
|
|
||||||
if(auto parameterShared=parameter_.lock())
|
if(auto parameterShared=parameter_.lock())
|
||||||
{
|
{
|
||||||
auto range = parameterShared->getTemplate().getRange();
|
auto range = parameterShared->getTemplate().getRange(vectorIndex);
|
||||||
minValue_=range.getMin();
|
minValue_=range.getMin();
|
||||||
maxValue_=range.getMax();
|
maxValue_=range.getMax();
|
||||||
clampMin_=range.getMinFlag()==prm::RangeFlag::LOCKED;
|
clampMin_=range.getMinFlag()==prm::RangeFlag::LOCKED;
|
||||||
@@ -59,7 +59,7 @@ void enzo::ui::FloatSliderParm::paintEvent(QPaintEvent *event)
|
|||||||
painter.setBrush(QColor("#383838"));
|
painter.setBrush(QColor("#383838"));
|
||||||
|
|
||||||
const int valueRange = maxValue_-minValue_;
|
const int valueRange = maxValue_-minValue_;
|
||||||
float fillPercent = std::min<float>(static_cast<float>(value_-minValue_)/valueRange, 1);
|
float fillPercent = std::clamp<float>(static_cast<float>(value_-minValue_)/valueRange, 0, 1);
|
||||||
|
|
||||||
constexpr float margin = 3;
|
constexpr float margin = 3;
|
||||||
float fillWidth = rect().width()-margin*2;
|
float fillWidth = rect().width()-margin*2;
|
||||||
|
|||||||
@@ -42,17 +42,16 @@ enzo::ui::FormParm::FormParm(std::weak_ptr<prm::Parameter> parameter)
|
|||||||
}
|
}
|
||||||
case prm::Type::XYZ:
|
case prm::Type::XYZ:
|
||||||
{
|
{
|
||||||
FloatSliderParm* slider1 = new FloatSliderParm(parameter, 0);
|
const unsigned int vectorSize = sharedParameter->getVectorSize();
|
||||||
FloatSliderParm* slider2 = new FloatSliderParm(parameter, 0);
|
|
||||||
FloatSliderParm* slider3 = new FloatSliderParm(parameter, 0);
|
|
||||||
QHBoxLayout* vectorLayout = new QHBoxLayout();
|
QHBoxLayout* vectorLayout = new QHBoxLayout();
|
||||||
vectorLayout->addWidget(slider1);
|
for(int i=0; i<vectorSize; i++)
|
||||||
vectorLayout->addWidget(slider2);
|
{
|
||||||
vectorLayout->addWidget(slider3);
|
FloatSliderParm* slider = new FloatSliderParm(parameter, i);
|
||||||
|
vectorLayout->addWidget(slider);
|
||||||
|
connect(slider, &FloatSliderParm::valueChanged, this, [this, i](bt::floatT value){this->changeValue(value, i);});
|
||||||
|
|
||||||
|
}
|
||||||
mainLayout_->addLayout(vectorLayout);
|
mainLayout_->addLayout(vectorLayout);
|
||||||
connect(slider1, &FloatSliderParm::valueChanged, this, [this](bt::floatT value){this->changeValue(value, 0);});
|
|
||||||
connect(slider2, &FloatSliderParm::valueChanged, this, [this](bt::floatT value){this->changeValue(value, 1);});
|
|
||||||
connect(slider3, &FloatSliderParm::valueChanged, this, [this](bt::floatT value){this->changeValue(value, 2);});
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case prm::Type::STRING:
|
case prm::Type::STRING:
|
||||||
|
|||||||
@@ -61,8 +61,7 @@ void enzo::ui::IntSliderParm::paintEvent(QPaintEvent *event)
|
|||||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||||
|
|
||||||
const int valueRange = maxValue_-minValue_;
|
const int valueRange = maxValue_-minValue_;
|
||||||
float fillPercent = std::min<float>(static_cast<float>(value_-minValue_)/valueRange, 1);
|
float fillPercent = std::clamp<float>(static_cast<float>(value_-minValue_)/valueRange, 0, 1);
|
||||||
IC(value_, fillPercent);
|
|
||||||
float margin = 3;
|
float margin = 3;
|
||||||
float fillWidth = rect().width()-margin*2;
|
float fillWidth = rect().width()-margin*2;
|
||||||
fillWidth *= fillPercent;
|
fillWidth *= fillPercent;
|
||||||
|
|||||||
@@ -21,8 +21,8 @@ void GopGrid::cookOp(enzo::op::Context context)
|
|||||||
if(outputRequested(0))
|
if(outputRequested(0))
|
||||||
{
|
{
|
||||||
geo::Geometry geo;
|
geo::Geometry geo;
|
||||||
bt::floatT width = context.evalFloatParm("width");
|
bt::floatT width = context.evalFloatParm("size", 0);
|
||||||
bt::floatT height = context.evalFloatParm("height");
|
bt::floatT height = context.evalFloatParm("size", 1);
|
||||||
|
|
||||||
const bt::intT columns = context.evalFloatParm("columns");
|
const bt::intT columns = context.evalFloatParm("columns");
|
||||||
const bt::intT rows = context.evalFloatParm("rows");
|
const bt::intT rows = context.evalFloatParm("rows");
|
||||||
@@ -74,8 +74,7 @@ void GopGrid::cookOp(enzo::op::Context context)
|
|||||||
|
|
||||||
enzo::prm::Template GopGrid::parameterList[] =
|
enzo::prm::Template GopGrid::parameterList[] =
|
||||||
{
|
{
|
||||||
enzo::prm::Template(enzo::prm::Type::FLOAT, "width", enzo::prm::Default(10), 1, enzo::prm::Range(0, enzo::prm::RangeFlag::UNLOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)),
|
enzo::prm::Template(enzo::prm::Type::XYZ, "size", enzo::prm::Default(10), 2, enzo::prm::Range(0, enzo::prm::RangeFlag::UNLOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)),
|
||||||
enzo::prm::Template(enzo::prm::Type::FLOAT, "height", enzo::prm::Default(10), 1, enzo::prm::Range(0, enzo::prm::RangeFlag::UNLOCKED, 100, enzo::prm::RangeFlag::UNLOCKED)),
|
|
||||||
enzo::prm::Template(
|
enzo::prm::Template(
|
||||||
enzo::prm::Type::INT,
|
enzo::prm::Type::INT,
|
||||||
"rows",
|
"rows",
|
||||||
|
|||||||
Reference in New Issue
Block a user