|
|
@@ -49,6 +49,7 @@ import com.jme3.renderer.queue.RenderQueue;
|
|
|
import com.jme3.renderer.queue.RenderQueue.Bucket;
|
|
|
import com.jme3.renderer.queue.RenderQueue.ShadowMode;
|
|
|
import com.jme3.scene.control.Control;
|
|
|
+import com.jme3.scene.threadwarden.SceneGraphThreadWarden;
|
|
|
import com.jme3.util.SafeArrayList;
|
|
|
import com.jme3.util.TempVars;
|
|
|
import com.jme3.util.clone.Cloner;
|
|
|
@@ -278,11 +279,13 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* a refresh is required.
|
|
|
*/
|
|
|
protected void setTransformRefresh() {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
refreshFlags |= RF_TRANSFORM;
|
|
|
setBoundRefresh();
|
|
|
}
|
|
|
|
|
|
protected void setLightListRefresh() {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
refreshFlags |= RF_LIGHTLIST;
|
|
|
// Make sure next updateGeometricState() visits this branch
|
|
|
// to update lights.
|
|
|
@@ -299,6 +302,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
}
|
|
|
|
|
|
protected void setMatParamOverrideRefresh() {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
refreshFlags |= RF_MATPARAM_OVERRIDE;
|
|
|
Spatial p = parent;
|
|
|
while (p != null) {
|
|
|
@@ -316,6 +320,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* a refresh is required.
|
|
|
*/
|
|
|
protected void setBoundRefresh() {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
refreshFlags |= RF_BOUND;
|
|
|
|
|
|
Spatial p = parent;
|
|
|
@@ -612,6 +617,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see MatParamOverride
|
|
|
*/
|
|
|
public void addMatParamOverride(MatParamOverride override) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
if (override == null) {
|
|
|
throw new IllegalArgumentException("override cannot be null");
|
|
|
}
|
|
|
@@ -626,6 +632,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see MatParamOverride
|
|
|
*/
|
|
|
public void removeMatParamOverride(MatParamOverride override) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
if (localOverrides.remove(override)) {
|
|
|
setMatParamOverrideRefresh();
|
|
|
}
|
|
|
@@ -637,6 +644,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see #addMatParamOverride(com.jme3.material.MatParamOverride)
|
|
|
*/
|
|
|
public void clearMatParamOverrides() {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
if (!localOverrides.isEmpty()) {
|
|
|
setMatParamOverrideRefresh();
|
|
|
}
|
|
|
@@ -772,6 +780,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see Spatial#removeControl(java.lang.Class)
|
|
|
*/
|
|
|
public void addControl(Control control) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
boolean before = requiresUpdates();
|
|
|
controls.add(control);
|
|
|
control.setSpatial(this);
|
|
|
@@ -823,6 +832,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see Spatial#addControl(com.jme3.scene.control.Control)
|
|
|
*/
|
|
|
public void removeControl(Class<? extends Control> controlType) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
boolean before = requiresUpdates();
|
|
|
for (int i = 0; i < controls.size(); i++) {
|
|
|
if (controlType.isAssignableFrom(controls.get(i).getClass())) {
|
|
|
@@ -850,6 +860,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @see Spatial#addControl(com.jme3.scene.control.Control)
|
|
|
*/
|
|
|
public boolean removeControl(Control control) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
boolean before = requiresUpdates();
|
|
|
boolean result = controls.remove(control);
|
|
|
if (result) {
|
|
|
@@ -1005,6 +1016,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* the parent of this node.
|
|
|
*/
|
|
|
protected void setParent(Node parent) {
|
|
|
+ assert SceneGraphThreadWarden.updateRequirement(this, parent);
|
|
|
this.parent = parent;
|
|
|
}
|
|
|
|
|
|
@@ -1369,6 +1381,7 @@ public abstract class Spatial implements Savable, Cloneable, Collidable,
|
|
|
* @param lod The lod level to set.
|
|
|
*/
|
|
|
public void setLodLevel(int lod) {
|
|
|
+ assert SceneGraphThreadWarden.assertOnCorrectThread(this);
|
|
|
}
|
|
|
|
|
|
/**
|