abstractthing.java
来自「一个JAVA程序员的游戏」· Java 代码 · 共 100 行
JAVA
100 行
/*
* AbstractThing.java
*
* Created on 26. Dezember 2006, 15:01
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package kanjitori.graphics;
import com.jme.image.Image;
import com.jme.image.Texture;
import com.jme.renderer.ColorRGBA;
import com.jme.scene.Node;
import com.jme.scene.Spatial;
import com.jme.scene.state.AlphaState;
import com.jme.scene.state.MaterialState;
import com.jme.scene.state.RenderState;
import com.jme.scene.state.TextureState;
import com.jme.system.DisplaySystem;
import com.jme.util.TextureManager;
import java.util.ArrayList;
import kanjitori.*;
/**
*
* @author Pirx
*/
public abstract class AbstractThing implements Thing {
protected Node node;
private static AlphaState asTransparent;
public Node getNode() {
return node;
}
protected DisplaySystem display() {
return DisplaySystem.getDisplaySystem();
}
protected TextureState loadTexture(String texture) {
TextureState ts = display().getRenderer().createTextureState();
Texture t = TextureManager.loadTexture(texture, Texture.MM_LINEAR, Texture.FM_LINEAR,
ts.getMaxAnisotropic(), true);
ts.setTexture(t);
return ts;
}
protected TextureState loadTextureUncompressed(String texture) {
TextureState ts = display().getRenderer().createTextureState();
Texture t = TextureManager.loadTexture(texture, Texture.MM_LINEAR, Texture.FM_LINEAR,
Image.GUESS_FORMAT_NO_S3TC, ts.getMaxAnisotropic(), true);
ts.setTexture(t);
return ts;
}
protected MaterialState getMaterialState(ColorRGBA color) {
MaterialState mat = display().getRenderer().createMaterialState();
mat.setEmissive(color == null ? new ColorRGBA(0.5f, 0.5f, 0.5f, 1) : color);
return mat;
}
public boolean checkPlayerCollision() {
Node player = Player.getPlayer().getCollisionNode();
if (player == null || player.getWorldBound() == null || node == null || node.getWorldBound() == null) {
return false;
}
return node.getWorldBound().intersects(player.getWorldBound());
}
protected AlphaState getTransparence() {
if (asTransparent == null) {
asTransparent = display().getRenderer().createAlphaState();
asTransparent.setBlendEnabled(true);
asTransparent.setSrcFunction(AlphaState.SB_SRC_ALPHA);
asTransparent.setDstFunction(AlphaState.DB_ONE_MINUS_SRC_ALPHA);
asTransparent.setEnabled(true);
}
return asTransparent;
}
public static void cleanTexture(Spatial s) {
TextureState ts = (TextureState)s.getRenderState(RenderState.RS_TEXTURE);
if(ts != null) {
ts.deleteAll(true);
}
if(s instanceof Node) {
ArrayList<Spatial> children = ((Node)s).getChildren();
if(children != null) {
for(Spatial child : children) {
cleanTexture(child);
}
}
}
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?