From ddcb70ce901a80a36e0f028655573b4f520f0334 Mon Sep 17 00:00:00 2001 From: Cyrille Henry Date: Wed, 15 Oct 2014 11:03:40 +0000 Subject: add testMassN and testLinkN to test only 1 mass or link svn path=/trunk/externals/pmpd/; revision=17358 --- pmpd.c | 2 ++ pmpd2d.c | 4 +++- pmpd2d_test.c | 57 ++++++++++++++++++++++++++++++++++++++++++++++++++++----- pmpd3d.c | 2 ++ pmpd3d_test.c | 48 ++++++++++++++++++++++++++++++++++++++++++++++++ pmpd_test.c | 47 +++++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 154 insertions(+), 6 deletions(-) diff --git a/pmpd.c b/pmpd.c index 9e3edc0..5c991be 100644 --- a/pmpd.c +++ b/pmpd.c @@ -186,6 +186,8 @@ void pmpd_setup(void) class_addmethod(pmpd_class, (t_method)pmpd_testLinkT, gensym("testLinkT"), A_GIMME, 0); class_addmethod(pmpd_class, (t_method)pmpd_testMassL, gensym("testMassL"), A_GIMME, 0); class_addmethod(pmpd_class, (t_method)pmpd_testLinkL, gensym("testLinkL"), A_GIMME, 0); + class_addmethod(pmpd_class, (t_method)pmpd_testMassL, gensym("testMassN"), A_GIMME, 0); + class_addmethod(pmpd_class, (t_method)pmpd_testLinkL, gensym("testLinkN"), A_GIMME, 0); /* pmpd_stat diff --git a/pmpd2d.c b/pmpd2d.c index 94e2b99..1d40eb6 100644 --- a/pmpd2d.c +++ b/pmpd2d.c @@ -248,7 +248,9 @@ void pmpd2d_setup(void) class_addmethod(pmpd2d_class, (t_method)pmpd2d_testMassT, gensym("testMassT"), A_GIMME, 0); class_addmethod(pmpd2d_class, (t_method)pmpd2d_testLinkT, gensym("testLinkT"), A_GIMME, 0); class_addmethod(pmpd2d_class, (t_method)pmpd2d_testMassL, gensym("testMassL"), A_GIMME, 0); - class_addmethod(pmpd2d_class, (t_method)pmpd2d_testLinkL, gensym("testLinkL"), A_GIMME, 0); + class_addmethod(pmpd2d_class, (t_method)pmpd2d_testLinkL, gensym("testLinkL"), A_GIMME, 0); + class_addmethod(pmpd2d_class, (t_method)pmpd2d_testMassL, gensym("testMassN"), A_GIMME, 0); + class_addmethod(pmpd2d_class, (t_method)pmpd2d_testLinkL, gensym("testLinkN"), A_GIMME, 0); /* pmpd2d_stat diff --git a/pmpd2d_test.c b/pmpd2d_test.c index c1d3114..092dd31 100644 --- a/pmpd2d_test.c +++ b/pmpd2d_test.c @@ -210,6 +210,11 @@ int test_2d_link(int i, t_pmpd2d *x, int argc, t_atom *argv) if ( x->link[i].Id != atom_getsymbolarg(j+1,argc,argv) ) { return(0); } j+=2; } + else if (atom_getsymbolarg(j,argc,argv) == gensym("lengthSup") ) + { + if ( x->link[i].distance < atom_getfloatarg(j+1,argc,argv) ) { return(0); } + j+=2; + } else if (atom_getsymbolarg(j,argc,argv) == gensym("forceXSup") ) { if ( x->link[i].forceX < atom_getfloatarg(j+1,argc,argv) ) { return(0); } @@ -244,11 +249,6 @@ int test_2d_link(int i, t_pmpd2d *x, int argc, t_atom *argv) if ( tmp >= tmp2 ) { return(0); } j+=2; } - else if (atom_getsymbolarg(j,argc,argv) == gensym("lengthSup") ) - { - if ( x->link[i].distance < atom_getfloatarg(j+1,argc,argv) ) { return(0); } - j+=2; - } else if ( atom_getsymbolarg(j,argc,argv) == gensym("lengthInf") ) { if ( x->link[i].distance >= atom_getfloatarg(j+1,argc,argv) ) { return(0); } @@ -456,3 +456,50 @@ void pmpd2d_testMassL(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) outlet_anything(x->main_outlet, gensym("testMassL"),i+1 , list); } +void pmpd2d_testLinkN(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_link-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_2d_link(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testLinkN"),3,std_out); +} + +void pmpd2d_testMassN(t_pmpd2d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_mass-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_2d_mass(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testMassN"),3,std_out); +} diff --git a/pmpd3d.c b/pmpd3d.c index 4a7d97f..244fdb2 100644 --- a/pmpd3d.c +++ b/pmpd3d.c @@ -278,6 +278,8 @@ void pmpd3d_setup(void) class_addmethod(pmpd3d_class, (t_method)pmpd3d_testLinkT, gensym("testLinkT"), A_GIMME, 0); class_addmethod(pmpd3d_class, (t_method)pmpd3d_testMassL, gensym("testMassL"), A_GIMME, 0); class_addmethod(pmpd3d_class, (t_method)pmpd3d_testLinkL, gensym("testLinkL"), A_GIMME, 0); + class_addmethod(pmpd3d_class, (t_method)pmpd3d_testMassL, gensym("testMassN"), A_GIMME, 0); + class_addmethod(pmpd3d_class, (t_method)pmpd3d_testLinkL, gensym("testLinkN"), A_GIMME, 0); /* pmpd3d_stat diff --git a/pmpd3d_test.c b/pmpd3d_test.c index a8baae6..7d2c116 100644 --- a/pmpd3d_test.c +++ b/pmpd3d_test.c @@ -505,3 +505,51 @@ void pmpd3d_testMassL(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) SETSYMBOL(&(list[0]),atom_getsymbolarg(0,argc,argv)); outlet_anything(x->main_outlet, gensym("testMassL"),i+1 , list); } + +void pmpd3d_testLinkN(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_link-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_3d_link(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testLinkN"),3,std_out); +} + +void pmpd3d_testMassN(t_pmpd3d *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_mass-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_3d_mass(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testMassN"),3,std_out); +} diff --git a/pmpd_test.c b/pmpd_test.c index e87316b..d74220e 100644 --- a/pmpd_test.c +++ b/pmpd_test.c @@ -396,3 +396,50 @@ void pmpd_testMassL(t_pmpd *x, t_symbol *s, int argc, t_atom *argv) outlet_anything(x->main_outlet, gensym("testMassL"),i+1 , list); } +void pmpd_testLinkN(t_pmpd *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_link-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_link(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testLinkN"),3,std_out); +} + +void pmpd_testMassN(t_pmpd *x, t_symbol *s, int argc, t_atom *argv) +{ + t_atom std_out[3]; + t_int i, tmp; + + SETSYMBOL(&(std_out[0]),atom_getsymbolarg(0,argc,argv)); + i = atom_getfloatarg(1,argc,argv); + i = min(x->nb_mass-1,i); + i = max(0,i); + SETFLOAT(&(std_out[1]),i); + + tmp=test_mass(i,x,argc,argv); + if (tmp == -1) + { + return; + } + if (tmp) + SETFLOAT(&(std_out[2]),1); + else + SETFLOAT(&(std_out[2]),0); + + outlet_anything(x->main_outlet, gensym("testMassN"),3,std_out); +} -- cgit v1.2.1