babylon.freecamera.input.virtualjoystick.ts 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. module BABYLON.CameraInputs {
  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. var camera = this.camera;
  14. var speed = camera._computeLocalCameraSpeed() * 50;
  15. var cameraTransform = Matrix.RotationYawPitchRoll(camera.rotation.y, camera.rotation.x, 0);
  16. var deltaTransform = Vector3.TransformCoordinates(new Vector3(this._leftjoystick.deltaPosition.x * speed, this._leftjoystick.deltaPosition.y * speed, this._leftjoystick.deltaPosition.z * speed), cameraTransform);
  17. camera.cameraDirection = camera.cameraDirection.add(deltaTransform);
  18. camera.cameraRotation = camera.cameraRotation.addVector3(this._rightjoystick.deltaPosition);
  19. if (!this._leftjoystick.pressed) {
  20. this._leftjoystick.deltaPosition = this._leftjoystick.deltaPosition.scale(0.9);
  21. }
  22. if (!this._rightjoystick.pressed) {
  23. this._rightjoystick.deltaPosition = this._rightjoystick.deltaPosition.scale(0.9);
  24. }
  25. }
  26. attachCamera(camera: FreeCamera) {
  27. this.camera = camera;
  28. this._leftjoystick = new VirtualJoystick(true);
  29. this._leftjoystick.setAxisForUpDown(JoystickAxis.Z);
  30. this._leftjoystick.setAxisForLeftRight(JoystickAxis.X);
  31. this._leftjoystick.setJoystickSensibility(0.15);
  32. this._rightjoystick = new VirtualJoystick(false);
  33. this._rightjoystick.setAxisForUpDown(JoystickAxis.X);
  34. this._rightjoystick.setAxisForLeftRight(JoystickAxis.Y);
  35. this._rightjoystick.reverseUpDown = true;
  36. this._rightjoystick.setJoystickSensibility(0.05);
  37. this._rightjoystick.setJoystickColor("yellow");
  38. }
  39. detach() {
  40. this._leftjoystick.releaseCanvas();
  41. }
  42. getTypeName(): string {
  43. return "freecamera.virtualjoystick";
  44. }
  45. }
  46. InputTypes["freecamera.virtualjoystick"] = FreeCameraVirtualJoystickInput;
  47. }