X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fmodules%2Fmod_particle%2Fplant.cpp;h=47b13a3e61a5c40d5e0bbc07383dfa5234ba2a63;hb=9459638ad6797b8139f1e9f0715c96076dbf0890;hp=1cc6dc0a6e8bfcc710c5a7f727be2c89063e52c4;hpb=fc70eb2b6169164e3932aa495b7d8eff3daa83c8;p=synfig.git diff --git a/synfig-core/trunk/src/modules/mod_particle/plant.cpp b/synfig-core/trunk/src/modules/mod_particle/plant.cpp index 1cc6dc0..47b13a3 100644 --- a/synfig-core/trunk/src/modules/mod_particle/plant.cpp +++ b/synfig-core/trunk/src/modules/mod_particle/plant.cpp @@ -76,7 +76,7 @@ SYNFIG_LAYER_SET_CVS_ID(Plant,"$Id$"); Plant::Plant(): - offset(0,0), + origin(0,0), split_angle(Angle::deg(10)), gravity(0,-0.1), velocity(0.3), @@ -241,6 +241,9 @@ Plant::sync()const if((((i+1)*sprouts + steps/2) / steps) > branch_count) { Vector branch_velocity(deriv(f).norm()*velocity + deriv(f).perp().norm()*perp_velocity); + if (isnan(branch_velocity[0]) || isnan(branch_velocity[1])) + continue; + branch_velocity[0] += random_factor * random(Random::SMOOTH_COSINE, 1, f*splits, 0.0f, 0.0f); branch_velocity[1] += random_factor * random(Random::SMOOTH_COSINE, 2, f*splits, 0.0f, 0.0f); @@ -284,7 +287,7 @@ Plant::set_param(const String & param, const ValueBase &value) needs_sync_=true; return true; } - IMPORT(offset); + IMPORT(origin); IMPORT_PLUS(split_angle,needs_sync_=true); IMPORT_PLUS(gravity,needs_sync_=true); IMPORT_PLUS(gradient,needs_sync_=true); @@ -310,6 +313,9 @@ Plant::set_param(const String & param, const ValueBase &value) IMPORT(size); IMPORT(size_as_alpha); IMPORT(reverse); + IMPORT(use_width); + + IMPORT_AS(origin,"offset"); return Layer_Composite::set_param(param,value); } @@ -344,7 +350,7 @@ Plant::get_param(const String& param)const if(param=="seed") return random.get_seed(); EXPORT(bline); - EXPORT(offset); + EXPORT(origin); EXPORT(split_angle); EXPORT(gravity); EXPORT(velocity); @@ -356,9 +362,9 @@ Plant::get_param(const String& param)const EXPORT(random_factor); EXPORT(drag); EXPORT(size); - EXPORT(size_as_alpha); EXPORT(reverse); + EXPORT(use_width); EXPORT_NAME(); @@ -376,12 +382,12 @@ Plant::get_param_vocab()const ret.push_back(ParamDesc("bline") .set_local_name(_("Vertices")) .set_description(_("A list of BLine Points")) - .set_origin("offset") + .set_origin("origin") .set_hint("width") ); - ret.push_back(ParamDesc("offset") - .set_local_name(_("Offset")) + ret.push_back(ParamDesc("origin") + .set_local_name(_("Origin")) ); ret.push_back(ParamDesc("gradient") @@ -456,6 +462,11 @@ Plant::get_param_vocab()const .set_description(_("Drag slows the growth")) ); + ret.push_back(ParamDesc("use_width") + .set_local_name(_("Use Width")) + .set_description(_("Scale the velocity by the bline's width")) + ); + return ret; } @@ -481,8 +492,8 @@ Plant::accelerated_render(Context context,Surface *surface,int quality, const Re dest_surface.set_wh(surface->get_w(),surface->get_h()); dest_surface.clear(); - const Point tl(renddesc.get_tl()-offset); - const Point br(renddesc.get_br()-offset); + const Point tl(renddesc.get_tl()-origin); + const Point br(renddesc.get_br()-origin); const int w(renddesc.get_w()); const int h(renddesc.get_h());