abstractboxbot.java
来自「一个JAVA程序员的游戏」· Java 代码 · 共 97 行
JAVA
97 行
/*
* AbstractBoxBot.java
*
* Created on 28. Januar 2007, 17:37
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package kanjitori.graphics.bot;
import com.jme.bounding.BoundingBox;
import com.jme.image.Texture;
import com.jme.math.Vector3f;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.Controller;
import com.jme.scene.Node;
import com.jme.scene.shape.Box;
import com.jme.scene.state.CullState;
import com.jme.scene.state.MaterialState;
import com.jme.scene.state.TextureState;
import com.jme.util.TextureManager;
import java.awt.Color;
import java.awt.Image;
import javax.swing.ImageIcon;
import kanjitori.graphics.shape.RoundedBox;
/**
*
* @author Pirx
*/
public abstract class AbstractBoxBot extends AbstractBot {
//protected static Image CORPUS_IMAGE = new ImageIcon("data/corpus.png").getImage();
//private final static Color DARK_COLOR = new Color(0.2f, 0.2f, 0.2f);
private final static ColorRGBA MAT_COLOR = new ColorRGBA(1, 1, 1, 0);
private MaterialState ms;
/** Creates a new instance of AbstractBoxBot */
public AbstractBoxBot(String value) {
super(value);
node = new Node("bot");
initBot();
}
private void initBot() {
Image img = getImage(value);
TextureState ts = display().getRenderer().createTextureState();
Texture t = TextureManager.loadTexture(img, Texture.MM_LINEAR, Texture.MM_LINEAR, ts.getMaxAnisotropic(), true);
ts.setTexture(t);
RoundedBox box = new RoundedBox("bot",
new Vector3f(0.5f, 0.5f, 0.5f),
new Vector3f(0.05f, 0.05f, 0.05f),
new Vector3f(0.02f, 0.02f, 0.02f));
ms = getMaterialState(MAT_COLOR);
box.setRenderState(ms);
box.setRenderState(ts);
CullState cs = display().getRenderer().createCullState();
cs.setEnabled(true);
cs.setCullMode(CullState.CS_BACK);
box.setRenderState(cs);
box.updateRenderState();
box.setModelBound(new BoundingBox());
box.updateModelBound();
node.attachChild(box);
}
public void die() {
Vector3f position = node.getLocalTranslation();
Node rootNode = node.getParent();
node.getChild(0).setRenderState(getTransparence());
node.setRenderQueueMode(display().getRenderer().QUEUE_TRANSPARENT);
node.updateRenderState();
node.addController(new Controller() {
private float time = 0;
public void update(float f) {
time += f;
ms.getDiffuse().a = (2 - time) / 2;
if (time > 2) {
node.removeController(this);
remove();
cleanTexture(node);
}
}
});
}
abstract Image getImage(String value);
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?