2 * Copyright (c) 2003-2009 jMonkeyEngine
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions are
9 * * Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
12 * * Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
16 * * Neither the name of 'jMonkeyEngine' nor the names of its contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
22 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
23 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33 package com.jme.input;
35 import com.jme.renderer.Camera;
38 * <code>FirsPersonController</code> defines an InputHandler that sets
39 * input to be controlled similar to First Person Shooting games. By default the
40 * commands are, WSAD moves the camera forward, backward and strafes. The
41 * arrow keys rotate and tilt the camera and the mouse also rotates and tilts
43 * This is a handler that is composed from {@link KeyboardLookHandler} and {@link MouseLookHandler}.
45 * @version $Id: FirstPersonHandler.java,v 1.17 2007/08/26 08:44:20 irrisor Exp $
47 public class FirstPersonHandler extends InputHandler {
48 private MouseLookHandler mouseLookHandler;
49 private KeyboardLookHandler keyboardLookHandler;
52 * @return handler for keyboard controls
54 public KeyboardLookHandler getKeyboardLookHandler() {
55 return keyboardLookHandler;
59 * @return handler for mouse controls
61 public MouseLookHandler getMouseLookHandler() {
62 return mouseLookHandler;
65 public void setButtonPressRequired(boolean value) {
66 mouseLookHandler.requireButtonPress(value);
70 * Creates a first person handler.
71 * @param cam The camera to move by this handler.
73 public FirstPersonHandler( Camera cam ) {
74 mouseLookHandler = new MouseLookHandler( cam, 1 );
75 addToAttachedHandlers( mouseLookHandler );
76 keyboardLookHandler = new KeyboardLookHandler( cam, 0.5f, 0.01f );
77 addToAttachedHandlers( keyboardLookHandler );
81 * Creates a first person handler.
82 * @param cam The camera to move by this handler.
83 * @param moveSpeed action speed for move actions
84 * @param turnSpeed action speed for rotating actions
86 public FirstPersonHandler(Camera cam, float moveSpeed, float turnSpeed ) {
87 mouseLookHandler = new MouseLookHandler( cam, turnSpeed );
88 addToAttachedHandlers( mouseLookHandler );
89 keyboardLookHandler = new KeyboardLookHandler( cam, moveSpeed, turnSpeed );
90 addToAttachedHandlers( keyboardLookHandler );