[java-dev] Re: JitterGUI Family Documentation
jbmaxwell
jbmaxwell at btinternet.com
Sat Jun 2 09:29:12 MDT 2007
- Previous message: [java-dev] Re: JitterGUI Family Documentation
- Next message: [java-dev] Re: casting atom to short
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
aha! Got it. setUniqueIndex on the parent can't be zero (which I'd set it to before)...
Here's the current code. Ben, if you find this laughably goofy, please point out where, and why.
// Created on 3-Sep-2005
import com.cycling74.max.*;
import java.util.*;
/**
* @author bbn
*
* Max object container for a single slider
*/
public class JitterGuiSliderBank extends MaxObject {
private JitterGuiSliderElement s = null;
private ArrayList<JitterGuiSliderElement> Sliders = null;
private String context;
private float sX, sY, xoffset, yoffset;
public JitterGuiSliderBank(Atom args[]) // initialize with one slider
{
if (args.length == 0)
bail("gui.slider: need a context argument");
context = args[0].toString();
Sliders = new ArrayList<JitterGuiSliderElement>();
s = new JitterGuiSliderElement(this, new Callback(this, "out"));
s.init(context);
s.setUniqueIndex(1);
Sliders.add(s);
declareAttribute("color", null, "setColor");
declareAttribute("rotate", null, "setRotate");
declareAttribute("position", null, "setPosition");
declareAttribute("scale", null, "setScale");
}
public void nestSlider()
{
JitterGuiSliderElement sliderOne = Sliders.get(0);
float homePositionX = sliderOne.position[0];
float homePositionY = sliderOne.position[1];
float homePositionZ = sliderOne.position[2];
post("home position x: " +homePositionX);
JitterGuiSliderElement slider = new JitterGuiSliderElement(this, new Callback(this, "out"));
Atom[] setup = new Atom[]{Atom.newAtom((float)homePositionX + 0.4f),
Atom.newAtom((float)homePositionY + 0.6f), Atom.newAtom((float)homePositionZ)};
slider.init(context);
slider.setUniqueIndex(Sliders.size() + 1);
slider.setPosition(setup);
Sliders.add(slider);
// set up offsets for positioning later
sX = s.position[0];
sY = s.position[1];
float sliderX = slider.position[0];
xoffset = sliderX - sX;
float sliderY = slider.position[1];
yoffset = sliderY - sY;
}
public void out()
{
for(int i=0;i < Sliders.size();i++)
{
JitterGuiSliderElement slider = Sliders.get(i);
outlet(0, slider.val);
}
}
public void notifyDeleted()
{
for(int i=0;i < Sliders.size();i++)
{
JitterGuiSliderElement slider = Sliders.get(i);
slider.free();
}
}
public void setColor(Atom a[]) {s.setColor(a);}
public void setRotate(Atom a[]) {s.setRotate(a);}
public void setPosition(Atom a[])
{
s.setPosition(a);
sX = s.position[0];
sY = s.position[1];
for(int i=1;i < Sliders.size();i++)
{
float sliderZ = Sliders.get(i).position[2];
JitterGuiSliderElement slider = Sliders.get(i);
Atom[] shift = new Atom[]{Atom.newAtom((float)sX + xoffset), Atom.newAtom((float)sY + yoffset),
Atom.newAtom((float)sliderZ)};
slider.setPosition(shift);
}
}
public void setScale(Atom a[]) {s.setScale(a);}
}
cheers,
J.
- Previous message: [java-dev] Re: JitterGUI Family Documentation
- Next message: [java-dev] Re: casting atom to short
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
