From 6dfd55be0cb07c9358695aa5e1b0015d2f5d97bf Mon Sep 17 00:00:00 2001 From: dooglus Date: Sat, 22 Nov 2008 15:40:24 +0000 Subject: [PATCH] Add boolean parameter 'Positive Only' to stop negative affect from large distances. git-svn-id: https://synfig.svn.sourceforge.net/svnroot/synfig@2251 1f10aa63-cdf2-0310-b900-c93c546f37ac --- synfig-core/trunk/src/modules/example/metaballs.cpp | 10 +++++++++- synfig-core/trunk/src/modules/example/metaballs.h | 2 ++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/synfig-core/trunk/src/modules/example/metaballs.cpp b/synfig-core/trunk/src/modules/example/metaballs.cpp index 6437a42..874d7f9 100644 --- a/synfig-core/trunk/src/modules/example/metaballs.cpp +++ b/synfig-core/trunk/src/modules/example/metaballs.cpp @@ -68,7 +68,8 @@ Metaballs::Metaballs(): Layer_Composite(1.0,Color::BLEND_STRAIGHT), gradient(Color::black(), Color::white()), threshold(0), - threshold2(1) + threshold2(1), + positive(false) { centers.push_back(Point( 0, -1.5)); radii.push_back(2.5); weights.push_back(1); centers.push_back(Point(-2, 1)); radii.push_back(2.5); weights.push_back(1); @@ -99,6 +100,7 @@ Metaballs::set_param(const String & param, const ValueBase &value) IMPORT(gradient); IMPORT(threshold); IMPORT(threshold2); + IMPORT(positive); return Layer_Composite::set_param(param,value); } @@ -113,6 +115,7 @@ Metaballs::get_param(const String ¶m)const EXPORT(centers); EXPORT(threshold); EXPORT(threshold2); + EXPORT(positive); EXPORT_NAME(); EXPORT_VERSION(); @@ -149,6 +152,10 @@ Metaballs::get_param_vocab()const .set_local_name(_("Gradient Right")) ); + ret.push_back(ParamDesc("positive") + .set_local_name(_("Positive Only")) + ); + return ret; } @@ -158,6 +165,7 @@ static inline Real densityfunc(const synfig::Point &p, const synfig::Point &c, R const Real dy = p[1] - c[1]; const Real n = (1 - (dx*dx + dy*dy)/(R*R)); + if (positive && n < 0) return 0; return (n*n*n); /* diff --git a/synfig-core/trunk/src/modules/example/metaballs.h b/synfig-core/trunk/src/modules/example/metaballs.h index b52d98e..ee3bda5 100644 --- a/synfig-core/trunk/src/modules/example/metaballs.h +++ b/synfig-core/trunk/src/modules/example/metaballs.h @@ -53,6 +53,8 @@ private: synfig::Real threshold; synfig::Real threshold2; + bool positive; + synfig::Real totaldensity(const synfig::Point &pos)const; public: -- 2.7.4