diff --git a/Aquaria/AnimationEditor.cpp b/Aquaria/AnimationEditor.cpp index 024f3fe..8b88289 100644 --- a/Aquaria/AnimationEditor.cpp +++ b/Aquaria/AnimationEditor.cpp @@ -739,11 +739,17 @@ void AnimationEditor::update(float dt) float spd = 1.0f; if (core->mouse.scrollWheelChange < 0) { - ctrlSprite->scale.x /= 1.12f; + if(splinegrid && core->getShiftState()) + splinegrid->setPointScale(std::max(splinegrid->getPointScale() / 1.12f, 0.05f)); + else + ctrlSprite->scale.x /= 1.12f; } else if (core->mouse.scrollWheelChange > 0) { - ctrlSprite->scale.x *= 1.12f; + if(splinegrid && core->getShiftState()) + splinegrid->setPointScale(splinegrid->getPointScale() * 1.12f); + else + ctrlSprite->scale.x *= 1.12f; } if (core->getKeyState(KEY_PGDN) && core->getShiftState()) { diff --git a/BBGE/SplineGrid.cpp b/BBGE/SplineGrid.cpp index 6a1e89e..3d7b2be 100644 --- a/BBGE/SplineGrid.cpp +++ b/BBGE/SplineGrid.cpp @@ -8,7 +8,7 @@ SplineGridCtrlPoint *SplineGridCtrlPoint::movingPoint; SplineGridCtrlPoint::SplineGridCtrlPoint() { setTexture("gui/open-menu"); - setWidthHeight(16, 16); + setWidthHeight(8, 8); } Vector SplineGridCtrlPoint::getSplinePosition() const @@ -70,7 +70,7 @@ void SplineGridCtrlPoint::onUpdate(float dt) } SplineGrid::SplineGrid() - : wasModified(false), deg(0) + : wasModified(false), deg(0), pointscale(1) { setWidthHeight(128, 128); renderQuad = true; @@ -165,6 +165,8 @@ SplineGridCtrlPoint* SplineGrid::createControlPoint(size_t x, size_t y) const Vector pos01(float(x) / float(cpx-1), float(y) / float(cpy-1)); SplineGridCtrlPoint *cp = new SplineGridCtrlPoint(); cp->position = (pos01 - Vector(0.5f, 0.5f)) * wh; + cp->scale.x = pointscale; + cp->scale.y = pointscale; this->addChild(cp, PM_POINTER); return cp; } @@ -214,4 +216,12 @@ void SplineGrid::onRender(const RenderState& rs) const } } - +void SplineGrid::setPointScale(const float scale) +{ + pointscale = scale; + for(size_t i = 0; i < ctrlp.size(); ++i) + { + ctrlp[i]->scale.x = scale; + ctrlp[i]->scale.y = scale; + } +} diff --git a/BBGE/SplineGrid.h b/BBGE/SplineGrid.h index 962e824..534252c 100644 --- a/BBGE/SplineGrid.h +++ b/BBGE/SplineGrid.h @@ -39,6 +39,9 @@ public: void importControlPoints(const Vector *controlpoints); void resetControlPoints(); + void setPointScale(const float scale); + float getPointScale() const { return pointscale; } + virtual void onRender(const RenderState& rs) const OVERRIDE; virtual void onUpdate(float dt) OVERRIDE; @@ -55,6 +58,7 @@ private: std::vector ctrlp; unsigned deg; BSpline2DWithPoints bsp; + float pointscale; };