I have created a SpawnerControl that creates Nodes (Model)
I have created a DestroyerControl.
The way I want it to behave is that if anyting collides with it then that object will be destroyed. I thought the way to do this would be to use detachChild()
For some reason instead of just detaching just one object it detaches them all. Any Ideas?
Thanks
-Greg
[java]
package com.scriptblocks.flappymonkey.controller;
import com.jme3.app.SimpleApplication;
import com.jme3.bounding.BoundingVolume;
import com.jme3.collision.CollisionResults;
import com.jme3.export.InputCapsule;
import com.jme3.export.JmeExporter;
import com.jme3.export.JmeImporter;
import com.jme3.export.OutputCapsule;
import com.jme3.renderer.RenderManager;
import com.jme3.renderer.ViewPort;
import com.jme3.scene.Spatial;
import com.jme3.scene.control.AbstractControl;
import com.jme3.scene.control.Control;
import java.io.IOException;
public class DestroyerControl extends AbstractControl {
SimpleApplication app;
@Override
protected void controlUpdate(float tpf) {
CollisionResults results = new CollisionResults();
BoundingVolume bv = spatial.getWorldBound();
for (Spatial child : spatial.getParent().getChildren()) {
if (!"Destroyer Box".equals(child.getName())) {
child.collideWith(bv, results);
if (results.size() > 0) {
System.out.println("Collide " + child.getName() + " Class:" + child.getClass());
spatial.getParent().detachChildNamed(child.getName());
}
}
}
}
…
}
[/java]
[java]
public class SpawnerControl extends AbstractControl {
public float speed = .5f;
private float timeSenceLastCreation = 0;
public Node spawnTemplate;
public int blocksSpawned;
@Override
protected void controlUpdate(float tpf) {
timeSenceLastCreation = timeSenceLastCreation + tpf;
if (timeSenceLastCreation > speed && spawnTemplate!=null) {
System.out.println("Create");
spawnBlock(new Vector3f(0, 0, 0));
timeSenceLastCreation = 0;
}
}
protected Node getParentNode() {
//assuming parent is roodNode
return spatial.getParent();
}
…
public void spawnBlock(Vector3f loc) {
blocksSpawned++;
Spatial clone = spawnTemplate.clone();
if(clone instanceof Node){
Node block = (Node) spawnTemplate.clone();
block.setName("Block "+ blocksSpawned);
block.setLocalTranslation(loc);
block.addControl(new BlockControl());
getParentNode().attachChild(block);
} else if(clone instanceof Geometry){
Geometry block = (Geometry) spawnTemplate.clone();
block.setName("Block "+ blocksSpawned);
block.setLocalTranslation(loc);
block.addControl(new BlockControl());
getParentNode().attachChild(block);
}
}
public float getSpeed() {
return speed;
}
public void setSpeed(float speed) {
this.speed = speed;
}
public Node getSpawnTemplate() {
return spawnTemplate;
}
public void setSpawnTemplate(Node spawnTemplate) {
this.spawnTemplate = spawnTemplate;
}
[/java]