⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mousepickcontroller.java

📁 monkeymahjongg,一个JME3D游戏的源代码
💻 JAVA
字号:
package jmetest.monkeymahjongg.game;
 
 import com.jme.input.MouseInput;
 import com.jme.input.controls.GameControl;
 import com.jme.input.controls.binding.MouseButtonBinding;
 import com.jme.intersection.BoundingPickResults;
 import com.jme.intersection.PickResults;
 import com.jme.math.Ray;
 import com.jme.math.Vector2f;
 import com.jme.math.Vector3f;
 import com.jme.scene.Geometry;
 import com.jme.system.DisplaySystem;
 
 /**
 *
 * @author Pirx
 */
 public class MousePickController extends MahjonggGameController {
 
 private final GameControl pick;
 private final PickResults pr;
 private boolean released = true;
 
 public MousePickController(MahjonggGameState mahjonggGameState) {
 super(mahjonggGameState);
 pick = mahjonggGameState.getGameControlManager().addControl("pick");
 pick.addBinding(new MouseButtonBinding(0));
 pr = new BoundingPickResults();
 pr.setCheckDistance(true);
 }
 
 public void update(float time) {
 released = (pick.getValue() == 0) ? true : released;
 
 if (released && pick.getValue() > 0) {
 released = false;
 final MouseInput mouseInput = MouseInput.get();
 final Vector2f screenPos = new Vector2f(mouseInput.getXAbsolute(),
 mouseInput.getYAbsolute());
 final Vector3f worldCoords0 = DisplaySystem.getDisplaySystem().getWorldCoordinates(screenPos, 0);
 final Vector3f worldCoords1 = DisplaySystem.getDisplaySystem().getWorldCoordinates(screenPos, 1);
 final Ray mouseRay = new Ray(worldCoords0, worldCoords1.subtractLocal(worldCoords0).normalizeLocal());
 pr.clear();
 mahjonggGameState.getRootNode().findPick(mouseRay, pr);
 
 if (pr.getNumber() > 0) {
 final Geometry tile = pr.getPickData(0).getTargetMesh();
 mahjonggGameState.getLevel().picked(tile);
 }
 }
 }
 }
 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -