aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyrille Henry <nusmuk@users.sourceforge.net>2014-10-15 11:03:40 +0000
committerCyrille Henry <nusmuk@users.sourceforge.net>2014-10-15 11:03:40 +0000
commitddcb70ce901a80a36e0f028655573b4f520f0334 (patch)
treea056c42a760298dd3aae2eee5286699dafe26f0d
parentd8736fef3f30c718aa04d3578a190c47602ef93a (diff)
add testMassN and testLinkN to test only 1 mass or link
svn path=/trunk/externals/pmpd/; revision=17358
-rw-r--r--pmpd.c2
-rw-r--r--pmpd2d.c4
-rw-r--r--pmpd2d_test.c57
-rw-r--r--pmpd3d.c2
-rw-r--r--pmpd3d_test.c48
-rw-r--r--pmpd_test.c47
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);
+}