babylon.freecamera.input.virtualjoystick.ts 2.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. module BABYLON {
  2. export class FreeCameraVirtualJoystickInput implements ICameraInput<FreeCamera> {
  3. camera: FreeCamera;
  4. private _leftjoystick: VirtualJoystick;
  5. private _rightjoystick: VirtualJoystick;
  6. public getLeftJoystick(): VirtualJoystick {
  7. return this._leftjoystick;
  8. }
  9. public getRightJoystick(): VirtualJoystick {
  10. return this._rightjoystick;
  11. }
  12. public checkInputs() {
  13. if (this._leftjoystick){
  14. var camera = this.camera;
  15. var speed = camera._computeLocalCameraSpeed() * 50;
  16. var cameraTransform = Matrix.RotationYawPitchRoll(camera.rotation.y, camera.rotation.x, 0);
  17. var deltaTransform = Vector3.TransformCoordinates(new Vector3(this._leftjoystick.deltaPosition.x * speed, this._leftjoystick.deltaPosition.y * speed, this._leftjoystick.deltaPosition.z * speed), cameraTransform);
  18. camera.cameraDirection = camera.cameraDirection.add(deltaTransform);
  19. camera.cameraRotation = camera.cameraRotation.addVector3(this._rightjoystick.deltaPosition);
  20. if (!this._leftjoystick.pressed) {
  21. this._leftjoystick.deltaPosition = this._leftjoystick.deltaPosition.scale(0.9);
  22. }
  23. if (!this._rightjoystick.pressed) {
  24. this._rightjoystick.deltaPosition = this._rightjoystick.deltaPosition.scale(0.9);
  25. }
  26. }
  27. }
  28. attachControl(element : HTMLElement, noPreventDefault?: boolean) {
  29. this._leftjoystick = new VirtualJoystick(true);
  30. this._leftjoystick.setAxisForUpDown(JoystickAxis.Z);
  31. this._leftjoystick.setAxisForLeftRight(JoystickAxis.X);
  32. this._leftjoystick.setJoystickSensibility(0.15);
  33. this._rightjoystick = new VirtualJoystick(false);
  34. this._rightjoystick.setAxisForUpDown(JoystickAxis.X);
  35. this._rightjoystick.setAxisForLeftRight(JoystickAxis.Y);
  36. this._rightjoystick.reverseUpDown = true;
  37. this._rightjoystick.setJoystickSensibility(0.05);
  38. this._rightjoystick.setJoystickColor("yellow");
  39. }
  40. detachControl(element : HTMLElement) {
  41. this._leftjoystick.releaseCanvas();
  42. this._rightjoystick.releaseCanvas();
  43. }
  44. getTypeName(): string {
  45. return "FreeCameraVirtualJoystickInput";
  46. }
  47. getSimpleName(){
  48. return "virtualJoystick";
  49. }
  50. }
  51. CameraInputTypes["FreeCameraVirtualJoystickInput"] = FreeCameraVirtualJoystickInput;
  52. }