OSDN Git Service

- change Spatial and AbstractControl so that control.setSpatial doesn't have to be...
authornormen667 <normen667@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sat, 9 Feb 2013 01:36:36 +0000 (01:36 +0000)
committernormen667 <normen667@75d07b2b-3a1a-0410-a2c5-0572b91ccdca>
Sat, 9 Feb 2013 01:36:36 +0000 (01:36 +0000)
git-svn-id: http://jmonkeyengine.googlecode.com/svn/trunk@10367 75d07b2b-3a1a-0410-a2c5-0572b91ccdca

engine/src/core/com/jme3/scene/Spatial.java
engine/src/core/com/jme3/scene/control/AbstractControl.java

index 72927d7..9b509f2 100644 (file)
@@ -1182,7 +1182,9 @@ public abstract class Spatial implements Savable, Cloneable, Collidable, Cloneab
 
             clone.controls = new SafeArrayList<Control>(Control.class);
             for (int i = 0; i < controls.size(); i++) {
-                clone.controls.add(controls.get(i).cloneForSpatial(clone));
+                Control newControl = controls.get(i).cloneForSpatial(clone);
+                newControl.setSpatial(this);
+                clone.controls.add(newControl);
             }
 
             if (userData != null) {
index 39ebc14..43cae6d 100644 (file)
@@ -54,7 +54,7 @@ public abstract class AbstractControl implements Control {
     }
 
     public void setSpatial(Spatial spatial) {
-        if (this.spatial != null && spatial != null) {
+        if (this.spatial != null && spatial != null && spatial != this.spatial) {
             throw new IllegalStateException("This control has already been added to a Spatial");
         }   
         this.spatial = spatial;