1 package prefuse.util.force; 2 3 import java.util.ArrayList ; 4 5 10 public class Spring { 11 private static SpringFactory s_factory = new SpringFactory(); 12 13 18 public static SpringFactory getFactory() { 19 return s_factory; 20 } 21 22 29 public Spring(ForceItem fi1, ForceItem fi2, float k, float len) { 30 item1 = fi1; 31 item2 = fi2; 32 coeff = k; 33 length = len; 34 } 35 36 37 public ForceItem item1; 38 39 public ForceItem item2; 40 41 public float length; 42 43 public float coeff; 44 45 50 public static final class SpringFactory { 51 private int maxSprings = 10000; 52 private ArrayList springs = new ArrayList (); 53 54 57 public Spring getSpring(ForceItem f1, ForceItem f2, float k, float length) { 58 if ( springs.size() > 0 ) { 59 Spring s = (Spring)springs.remove(springs.size()-1); 60 s.item1 = f1; 61 s.item2 = f2; 62 s.coeff = k; 63 s.length = length; 64 return s; 65 } else { 66 return new Spring(f1,f2,k,length); 67 } 68 } 69 72 public void reclaim(Spring s) { 73 s.item1 = null; 74 s.item2 = null; 75 if ( springs.size() < maxSprings ) 76 springs.add(s); 77 } 78 } 80 } | Popular Tags |