56 lines
1.5 KiB
Java
56 lines
1.5 KiB
Java
package mygame;
|
|
|
|
import com.jme3.bounding.BoundingVolume;
|
|
import com.jme3.collision.CollisionResult;
|
|
import com.jme3.collision.CollisionResults;
|
|
import com.jme3.renderer.RenderManager;
|
|
import com.jme3.renderer.ViewPort;
|
|
import com.jme3.scene.Node;
|
|
import com.jme3.scene.Spatial;
|
|
import com.jme3.scene.control.AbstractControl;
|
|
import com.jme3.scene.control.Control;
|
|
|
|
/**
|
|
*
|
|
* @author Snowsun
|
|
*/
|
|
public class WeaponProjectileCollisionControl extends AbstractControl {
|
|
|
|
private Node starNode;
|
|
private BoundingVolume boundingVolume;
|
|
private CollisionResults results;
|
|
|
|
public WeaponProjectileCollisionControl(Node starNode) {
|
|
this.starNode = starNode;
|
|
results = new CollisionResults();
|
|
}
|
|
|
|
@Override
|
|
public void setSpatial(Spatial spatial) {
|
|
super.setSpatial(spatial);
|
|
boundingVolume = spatial.getWorldBound();
|
|
}
|
|
|
|
@Override
|
|
protected void controlUpdate(float tpf) {
|
|
for (Spatial s : starNode.getChildren()) {
|
|
results.clear();
|
|
s.collideWith(boundingVolume, results);
|
|
if (results.size() > 0) {
|
|
s.getControl(HitStarControl.class).setIsHited(true);
|
|
s.getControl(StarPointControl.class).setIsHited(true);
|
|
}
|
|
}
|
|
}
|
|
|
|
@Override
|
|
protected void controlRender(RenderManager rm, ViewPort vp) {
|
|
}
|
|
|
|
public Control cloneForSpatial(Spatial spatial) {
|
|
WeaponProjectileCollisionControl control = new WeaponProjectileCollisionControl(starNode);
|
|
spatial.addControl(control);
|
|
return control;
|
|
}
|
|
}
|