X-Git-Url: http://git.megacz.com/?p=anneal.git;a=blobdiff_plain;f=src%2Fedu%2Fberkeley%2Fqfat%2Fgeom%2FHasBindingGroup.java;h=fc12a29465d1643fc928703a29f22ec05505e511;hp=715f76396ff85786b91f33c80b868a503aea27df;hb=2b09dab499516873839b9bdbc972c980829e9bac;hpb=468b086402bb0ccae7ce4dda8b009d61bfc37a71 diff --git a/src/edu/berkeley/qfat/geom/HasBindingGroup.java b/src/edu/berkeley/qfat/geom/HasBindingGroup.java index 715f763..fc12a29 100644 --- a/src/edu/berkeley/qfat/geom/HasBindingGroup.java +++ b/src/edu/berkeley/qfat/geom/HasBindingGroup.java @@ -16,8 +16,11 @@ public abstract class HasBindingGroup { if (other.bindingGroup == null) other.bindingGroup = new BindingGroup(other); if (other.bindingGroup == this.bindingGroup) { - if (bindingGroup.getMatrix(other).equals(Matrix.ONE)) return; - throw new Error("rebind attempt with " + bindingGroup.getMatrix(other)); + if (getBindingMatrix(other).equals(bindingMatrix)) return; + throw new Error("rebind attempt: "+this+" and "+other+" with " + + bindingMatrix + + "; expected " + + getBindingMatrix(other)); } bindingMatrix = @@ -32,6 +35,10 @@ public abstract class HasBindingGroup { return bindingGroup.getMatrix(this); } + public Matrix getBindingMatrix(HasBindingGroup other) { + return bindingGroup.getMatrix(this, other); + } + public HasBindingGroup getMaster() { if (bindingGroup==null) return this; return bindingGroup.getMaster(); @@ -48,6 +55,9 @@ public abstract class HasBindingGroup { return bindingGroup.contains(t); } - public Iterable getBoundPeers() { return bindingGroup; } + public Iterable getBoundPeers() { + if (bindingGroup==null) bindingGroup = new BindingGroup(this); + return bindingGroup; + } public void bindingGroupChanged(BindingGroup newBindingGroup) { } }