// TrackerChase01 (a group of trackers, first follows mouse, rest follow each other) // David Bollinger, January 2006 // http://www.davebollinger.com // for Processing 0015 Beta // // first tracker follows mouse, rest follows first class TrackerChase { int ntrackers; Tracker [] trackers; TrackerChase(int n) { ntrackers = n; trackers = new Tracker[ntrackers]; for (int i=0; i= rate) is a "better" mouse follower } void draw() { hsr.update(); hsf.update(); trackerchase.setPhysics(hsr.getValue(), hsf.getValue()); boolean localGotMouse = bGotMouse; if (hsr.over || hsf.over) localGotMouse = false; if (localGotMouse) { float targetx = (float)(mouseX); float targety = (float)(mouseY); trackerchase.setTarget(targetx, targety); float elapsed = 0.0; while (elapsed < 1.0) { trackerchase.move(timeslice); if (isDrawing) trackerchase.draw(); elapsed += timeslice; } } hsr.draw(); hsf.draw(); } void mousePressed() { bGotMouse = true; if (mouseButton == LEFT) { isDrawing = true; } else if (mouseButton == RIGHT) { background(bgcolor); } } void mouseReleased() { if (mouseButton == LEFT) { isDrawing = false; } } void keyPressed() { if (key=='s') saveFrame("frame.tga"); }