Search in sources :

Example 26 with MouseButtonTrigger

use of com.jme3.input.controls.MouseButtonTrigger in project jmonkeyengine by jMonkeyEngine.

the class TestBatchNodeTower method simpleInitApp.

@Override
public void simpleInitApp() {
    timer = new NanoTimer();
    bulletAppState = new BulletAppState();
    bulletAppState.setThreadingType(BulletAppState.ThreadingType.PARALLEL);
    //   bulletAppState.setEnabled(false);
    stateManager.attach(bulletAppState);
    bullet = new Sphere(32, 32, 0.4f, true, false);
    bullet.setTextureMode(TextureMode.Projected);
    bulletCollisionShape = new SphereCollisionShape(0.4f);
    brick = new Box(brickWidth, brickHeight, brickDepth);
    brick.scaleTextureCoordinates(new Vector2f(1f, .5f));
    //bulletAppState.getPhysicsSpace().enableDebug(assetManager);
    initMaterial();
    initTower();
    initFloor();
    initCrossHairs();
    this.cam.setLocation(new Vector3f(0, 25f, 8f));
    cam.lookAt(Vector3f.ZERO, new Vector3f(0, 1, 0));
    cam.setFrustumFar(80);
    inputManager.addMapping("shoot", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    inputManager.addListener(actionListener, "shoot");
    rootNode.setShadowMode(ShadowMode.Off);
    batchNode.batch();
    batchNode.setShadowMode(ShadowMode.CastAndReceive);
    rootNode.attachChild(batchNode);
    shadowRenderer = new DirectionalLightShadowFilter(assetManager, 1024, 2);
    DirectionalLight dl = new DirectionalLight();
    dl.setDirection(new Vector3f(-1, -1, -1).normalizeLocal());
    shadowRenderer.setLight(dl);
    shadowRenderer.setLambda(0.55f);
    shadowRenderer.setShadowIntensity(0.6f);
    shadowRenderer.setShadowCompareMode(CompareMode.Hardware);
    shadowRenderer.setEdgeFilteringMode(EdgeFilteringMode.PCF4);
    FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
    fpp.addFilter(shadowRenderer);
    viewPort.addProcessor(fpp);
}
Also used : Sphere(com.jme3.scene.shape.Sphere) SphereCollisionShape(com.jme3.bullet.collision.shapes.SphereCollisionShape) NanoTimer(com.jme3.system.NanoTimer) Vector2f(com.jme3.math.Vector2f) BulletAppState(com.jme3.bullet.BulletAppState) Vector3f(com.jme3.math.Vector3f) DirectionalLight(com.jme3.light.DirectionalLight) Box(com.jme3.scene.shape.Box) FilterPostProcessor(com.jme3.post.FilterPostProcessor) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) DirectionalLightShadowFilter(com.jme3.shadow.DirectionalLightShadowFilter)

Example 27 with MouseButtonTrigger

use of com.jme3.input.controls.MouseButtonTrigger in project jmonkeyengine by jMonkeyEngine.

the class TestPhysicsCharacter method setupKeys.

private void setupKeys() {
    inputManager.addMapping("Strafe Left", new KeyTrigger(KeyInput.KEY_Q), new KeyTrigger(KeyInput.KEY_Z));
    inputManager.addMapping("Strafe Right", new KeyTrigger(KeyInput.KEY_E), new KeyTrigger(KeyInput.KEY_X));
    inputManager.addMapping("Rotate Left", new KeyTrigger(KeyInput.KEY_A), new KeyTrigger(KeyInput.KEY_LEFT));
    inputManager.addMapping("Rotate Right", new KeyTrigger(KeyInput.KEY_D), new KeyTrigger(KeyInput.KEY_RIGHT));
    inputManager.addMapping("Walk Forward", new KeyTrigger(KeyInput.KEY_W), new KeyTrigger(KeyInput.KEY_UP));
    inputManager.addMapping("Walk Backward", new KeyTrigger(KeyInput.KEY_S), new KeyTrigger(KeyInput.KEY_DOWN));
    inputManager.addMapping("Jump", new KeyTrigger(KeyInput.KEY_SPACE), new KeyTrigger(KeyInput.KEY_RETURN));
    inputManager.addMapping("Shoot", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    inputManager.addListener(this, "Strafe Left", "Strafe Right");
    inputManager.addListener(this, "Rotate Left", "Rotate Right");
    inputManager.addListener(this, "Walk Forward", "Walk Backward");
    inputManager.addListener(this, "Jump", "Shoot");
}
Also used : KeyTrigger(com.jme3.input.controls.KeyTrigger) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger)

Example 28 with MouseButtonTrigger

use of com.jme3.input.controls.MouseButtonTrigger in project chordatlas by twak.

the class Tweed method simpleInitApp.

public void simpleInitApp() {
    // TweedSettings.load( new File ( Tweed.DATA ) );
    point = new PointLight();
    point.setEnabled(true);
    point.setColor(ColorRGBA.White.mult(4));
    point.setRadius(50);
    rootNode.addLight(point);
    sun = new DirectionalLight();
    // sun.setDirection(new Vector3f(-0.0f, -1f, -0f).normalizeLocal());
    sun.setDirection(new Vector3f(-0.1f, -0.7f, -1.0f).normalizeLocal());
    sun.setColor(new ColorRGBA(1f, 0.95f, 0.99f, 1f));
    rootNode.addLight(sun);
    // enable multiple lights
    renderManager.setPreferredLightMode(LightMode.SinglePass);
    renderManager.setSinglePassLightBatchSize(16);
    ambient = new AmbientLight();
    rootNode.addLight(ambient);
    setAmbient(0);
    setDisplayFps(false);
    setDisplayStatView(false);
    clearBackground();
    buildBackground();
    getFlyByCamera().setDragToRotate(true);
    setTool(tools[0]);
    debug = new Node("dbg");
    rootNode.attachChild(debug);
    // String folder = ; // data-source
    // SpotLightShadowRenderer shadows = new SpotLightShadowRenderer(assetManager, 1024);
    // shadows.setLight(sun);
    // shadows.setShadowIntensity(0.3f);
    // shadows.setEdgeFilteringMode(EdgeFilteringMode.PCF8);
    // viewPort.addProcessor(shadows);
    cam.setLocation(TweedSettings.settings.cameraLocation);
    cam.setRotation(TweedSettings.settings.cameraOrientation);
    setFov(0);
    setCameraSpeed(0);
    if (false) {
        // TweedSettings.settings.SSAO ) {
        FilterPostProcessor fpp = new FilterPostProcessor(assetManager);
        SSAOFilter filter = new SSAOFilter(0.50997847f, 1.440001f, 1.39999998f, 0);
        // fpp.addFilter( new ColorOverlayFilter( ColorRGBA.Magenta ));
        fpp.addFilter(filter);
        fpp.addFilter(new FXAAFilter());
        viewPort.addProcessor(fpp);
    }
    TweedSettings.loadDefault();
    inputManager.addMapping(MOUSE_MOVE, new MouseAxisTrigger(MouseInput.AXIS_X, false));
    inputManager.addMapping(MOUSE_MOVE, new MouseAxisTrigger(MouseInput.AXIS_Y, false));
    inputManager.addMapping(MOUSE_MOVE, new MouseAxisTrigger(MouseInput.AXIS_X, true));
    inputManager.addMapping(MOUSE_MOVE, new MouseAxisTrigger(MouseInput.AXIS_Y, true));
    inputManager.addListener(moveListener, MOUSE_MOVE);
    inputManager.addMapping(CLICK, new MouseButtonTrigger(MouseInput.BUTTON_RIGHT));
    inputManager.addListener(analogListener, CLICK);
    inputManager.addMapping(SPEED_UP, new KeyTrigger(KeyInput.KEY_UP));
    inputManager.addMapping(SPEED_DOWN, new KeyTrigger(KeyInput.KEY_DOWN));
    inputManager.addMapping(AMBIENT_UP, new KeyTrigger(KeyInput.KEY_RIGHT));
    inputManager.addMapping(AMBIENT_DOWN, new KeyTrigger(KeyInput.KEY_LEFT));
    inputManager.addMapping(FOV_UP, new KeyTrigger(KeyInput.KEY_PGUP));
    inputManager.addMapping(FOV_DOWN, new KeyTrigger(KeyInput.KEY_PGDN));
    inputManager.addMapping(TOGGLE_ORTHO, new KeyTrigger(KeyInput.KEY_O));
    inputManager.addListener(new com.jme3.input.controls.ActionListener() {

        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            if (name == SPEED_UP)
                setCameraSpeed(+1);
            else
                setCameraSpeed(-1);
        }
    }, SPEED_UP, SPEED_DOWN);
    inputManager.addListener(new com.jme3.input.controls.ActionListener() {

        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            if (!isPressed)
                return;
            if (name == AMBIENT_UP)
                setAmbient(+1);
            else
                setAmbient(-1);
        }
    }, AMBIENT_UP, AMBIENT_DOWN);
    inputManager.addListener(new com.jme3.input.controls.ActionListener() {

        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            if (!isPressed)
                return;
            if (name == FOV_UP)
                setFov(+1);
            else
                setFov(-1);
        }
    }, FOV_UP, FOV_DOWN);
    inputManager.addListener(new com.jme3.input.controls.ActionListener() {

        @Override
        public void onAction(String name, boolean isPressed, float tpf) {
            if (isPressed) {
                TweedSettings.settings.ortho = !TweedSettings.settings.ortho;
                setCameraPerspective();
            }
        }
    }, TOGGLE_ORTHO);
}
Also used : SSAOFilter(com.jme3.post.ssao.SSAOFilter) FXAAFilter(com.jme3.post.filters.FXAAFilter) Node(com.jme3.scene.Node) MouseAxisTrigger(com.jme3.input.controls.MouseAxisTrigger) KeyTrigger(com.jme3.input.controls.KeyTrigger) FilterPostProcessor(com.jme3.post.FilterPostProcessor) ColorRGBA(com.jme3.math.ColorRGBA) DirectionalLight(com.jme3.light.DirectionalLight) Vector3f(com.jme3.math.Vector3f) PointLight(com.jme3.light.PointLight) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) AmbientLight(com.jme3.light.AmbientLight)

Example 29 with MouseButtonTrigger

use of com.jme3.input.controls.MouseButtonTrigger in project TeachingInSimulation by ScOrPiOzzy.

the class CircuitState method bindCircuitBoardEvents.

private void bindCircuitBoardEvents() {
    // 给电路板添加监听
    addMapping("CONNECT_ON_DESKTOP_AXIR_X+", new MouseAxisTrigger(MouseInput.AXIS_X, true));
    addMapping("CONNECT_ON_DESKTOP_AXIR_X-", new MouseAxisTrigger(MouseInput.AXIS_X, false));
    addMapping("CONNECT_ON_DESKTOP_AXIR_Y+", new MouseAxisTrigger(MouseInput.AXIS_Y, true));
    addMapping("CONNECT_ON_DESKTOP_AXIR_Y-", new MouseAxisTrigger(MouseInput.AXIS_Y, false));
    String[] hoverMapping = new String[] { "CONNECT_ON_DESKTOP_AXIR_X+", "CONNECT_ON_DESKTOP_AXIR_X-", "CONNECT_ON_DESKTOP_AXIR_Y+", "CONNECT_ON_DESKTOP_AXIR_Y-" };
    addListener((AnalogListener) (name, value, tpf) -> {
        if (state == null) {
            return;
        }
        // 先判断鼠标是否在元器件上
        collision = JmeUtil.getCollisionFromCursor(rootCompNode, cam, inputManager);
        // 如果没有宣导元器件
        if (collision == null) {
            // 再尝试和桌面碰撞
            collision = JmeUtil.getCollisionFromCursor(desktop, cam, inputManager);
        }
        if (collision == null) {
            return;
        }
        Vector3f point = collision.getContactPoint();
        // 离电路板略高一些。
        point.addLocal(0, minHeight, 0);
        if (state == State.Starting) {
            // 开头
            Vector3f project = point.subtract(startLine1.getStart()).project(dir);
            if (project.dot(dir) < minLen) {
                return;
            }
            Vector3f line1EndPoint = startLine1.getStart().add(project);
            startLine1.updatePoints(startLine1.getStart(), line1EndPoint);
            Vector3f line2EndPoint = line1EndPoint.add(point.subtract(line1EndPoint).project(Vector3f.UNIT_Y));
            startLine2.updatePoints(line1EndPoint, line2EndPoint);
            // Vector3f line3EndPoint = point;
            startLine3.updatePoints(line2EndPoint, point);
        } else if (state == State.Mid) {
            // 计算midLine1.getStart() 与  鼠标point 向量在X与Z轴的投影。
            Vector3f tmpPoint = null;
            tmpPoint = midLine1.getStart().add(point.subtract(midLine1.getStart()).project(midAxis));
            midLine1.updatePoints(midLine1.getStart(), tmpPoint);
            midLine2.updatePoints(tmpPoint, point);
        } else if (state == State.Ending) {
        // endLine1.updatePoints(endLine1.getStart(), point);
        }
    }, hoverMapping);
    addMapping("CLICKED_ON_BOARD", new MouseButtonTrigger(MouseInput.BUTTON_LEFT));
    addMapping("CANCEL_ON_CONNECTING", new MouseButtonTrigger(MouseInput.BUTTON_RIGHT));
    addListener((ActionListener) (name, isPressed, tpf) -> {
        if (collision == null) {
            return;
        }
        if (desktop != collision.getGeometry()) {
            return;
        }
        if ("CANCEL_ON_CONNECTING".equals(name) && isPressed) {
            if (state == State.Starting || state == State.Mid) {
                connectClean();
            }
        }
        if ("CLICKED_ON_BOARD".equals(name) && isPressed) {
            if (state == null) {
                return;
            }
            if (state == State.Starting) {
                connectStarting();
                // 设置当前接线状态为接线中
                state = State.Mid;
            } else if (state == State.Mid) {
                connectMid();
            } else if (state == State.Ending) {
            // do nothing
            }
        }
    }, "CLICKED_ON_BOARD", "CANCEL_ON_CONNECTING");
}
Also used : BitmapFont(com.jme3.font.BitmapFont) URL(java.net.URL) ElecCompDef(com.cas.circuit.vo.ElecCompDef) TypicalCase(com.cas.sim.tis.entity.TypicalCase) MouseEventAdapter(com.cas.sim.tis.app.event.MouseEventAdapter) MouseAxisTrigger(com.jme3.input.controls.MouseAxisTrigger) Node(com.jme3.scene.Node) Future(java.util.concurrent.Future) ElecCompAction(com.cas.sim.tis.action.ElecCompAction) ElecComp(com.cas.sim.tis.entity.ElecComp) Map(java.util.Map) WireNumberControl(com.cas.sim.tis.app.control.WireNumberControl) WireProxy(com.cas.circuit.vo.archive.WireProxy) Archive(com.cas.circuit.vo.Archive) TagNameControl(com.cas.sim.tis.app.control.TagNameControl) AnalogListener(com.jme3.input.controls.AnalogListener) IContent(com.cas.sim.tis.view.control.IContent) PageController(com.cas.sim.tis.view.controller.PageController) TypicalCaseAction(com.cas.sim.tis.action.TypicalCaseAction) Set(java.util.Set) ActionListener(com.jme3.input.controls.ActionListener) CollisionResult(com.jme3.collision.CollisionResult) Collectors(java.util.stream.Collectors) Platform(javafx.application.Platform) Nullable(org.jetbrains.annotations.Nullable) List(java.util.List) Jack(com.cas.circuit.vo.Jack) Geometry(com.jme3.scene.Geometry) ControlIO(com.cas.circuit.vo.ControlIO) HintControl(com.cas.sim.tis.app.control.HintControl) Terminal(com.cas.circuit.vo.Terminal) ElecCompProxy(com.cas.circuit.vo.archive.ElecCompProxy) JmeUtil(com.cas.sim.tis.util.JmeUtil) HashMap(java.util.HashMap) Callable(java.util.concurrent.Callable) TypicalCase3D(com.cas.sim.tis.view.control.imp.jme.TypicalCase3D) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger) MouseInput(com.jme3.input.MouseInput) FastMath(com.jme3.math.FastMath) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) Spatial(com.jme3.scene.Spatial) Line(com.jme3.scene.shape.Line) SpringUtil(com.cas.sim.tis.util.SpringUtil) MouseEvent(com.cas.sim.tis.app.event.MouseEvent) Nonnull(javax.annotation.Nonnull) CfgConst(com.cas.circuit.CfgConst) Vector3f(com.jme3.math.Vector3f) Wire(com.cas.circuit.vo.Wire) CullHint(com.jme3.scene.Spatial.CullHint) Quaternion(com.jme3.math.Quaternion) HTTPUtils(com.cas.sim.tis.util.HTTPUtils) JaxbUtil(com.cas.sim.tis.xml.util.JaxbUtil) ModelKey(com.jme3.asset.ModelKey) ColorRGBA(com.jme3.math.ColorRGBA) StringUtils(org.springframework.util.StringUtils) BitmapText(com.jme3.font.BitmapText) MouseAxisTrigger(com.jme3.input.controls.MouseAxisTrigger) Vector3f(com.jme3.math.Vector3f) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger)

Example 30 with MouseButtonTrigger

use of com.jme3.input.controls.MouseButtonTrigger in project TeachingInSimulation by ScOrPiOzzy.

the class MyCameraState method initializeLocal.

@Override
protected void initializeLocal() {
    float aspect = (float) cam.getWidth() / cam.getHeight();
    cam.setParallelProjection(false);
    cam.setFrustumPerspective(45f, aspect, 0.01f, 1000);
    // 1、禁用飞行视角
    app.getFlyByCamera().setEnabled(false);
    // 2、启动跟随视角
    chaser = new ChaseCamera(cam, rootNode, inputManager);
    chaser.setHideCursorOnRotate(false);
    // 3、设置垂直翻转
    chaser.setInvertVerticalAxis(true);
    // 4、设置最大和最小仰角
    chaser.setMaxVerticalRotation(FastMath.HALF_PI);
    chaser.setMinVerticalRotation(-FastMath.HALF_PI);
    // 5、设置缩放与旋转的灵敏度
    chaser.setZoomSensitivity(1);
    chaser.setRotationSpeed(2);
    // 6、移除用于旋转相机的鼠标右键触发器
    inputManager.deleteTrigger(CameraInput.CHASECAM_TOGGLEROTATE, new MouseButtonTrigger(MouseInput.BUTTON_RIGHT));
    // 7、模拟一个拖拽事件,通过修改相机观测点的偏移量实现的。
    dragEvent();
}
Also used : ChaseCamera(com.jme3.input.ChaseCamera) MouseButtonTrigger(com.jme3.input.controls.MouseButtonTrigger)

Aggregations

MouseButtonTrigger (com.jme3.input.controls.MouseButtonTrigger)27 KeyTrigger (com.jme3.input.controls.KeyTrigger)12 ActionListener (com.jme3.input.controls.ActionListener)9 Material (com.jme3.material.Material)9 Vector3f (com.jme3.math.Vector3f)9 Geometry (com.jme3.scene.Geometry)9 MouseAxisTrigger (com.jme3.input.controls.MouseAxisTrigger)7 Box (com.jme3.scene.shape.Box)7 Quaternion (com.jme3.math.Quaternion)5 Node (com.jme3.scene.Node)5 BulletAppState (com.jme3.bullet.BulletAppState)4 Sphere (com.jme3.scene.shape.Sphere)4 SphereCollisionShape (com.jme3.bullet.collision.shapes.SphereCollisionShape)3 AnalogListener (com.jme3.input.controls.AnalogListener)3 DirectionalLight (com.jme3.light.DirectionalLight)3 ColorRGBA (com.jme3.math.ColorRGBA)3 FilterPostProcessor (com.jme3.post.FilterPostProcessor)3 JmeUtil (com.cas.sim.tis.util.JmeUtil)2 RigidBodyControl (com.jme3.bullet.control.RigidBodyControl)2 BitmapText (com.jme3.font.BitmapText)2