mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-04 00:49:02 -06:00 
			
		
		
		
	Merge pull request #1951 from wwylele/motion-sensor
Emulate motion sensor in frontend
This commit is contained in:
		@@ -19,16 +19,22 @@
 | 
			
		||||
 | 
			
		||||
void EmuWindow_SDL2::OnMouseMotion(s32 x, s32 y) {
 | 
			
		||||
    TouchMoved((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
 | 
			
		||||
    motion_emu->Tilt(x, y);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EmuWindow_SDL2::OnMouseButton(u32 button, u8 state, s32 x, s32 y) {
 | 
			
		||||
    if (button != SDL_BUTTON_LEFT)
 | 
			
		||||
        return;
 | 
			
		||||
 | 
			
		||||
    if (state == SDL_PRESSED) {
 | 
			
		||||
        TouchPressed((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
 | 
			
		||||
    } else {
 | 
			
		||||
        TouchReleased();
 | 
			
		||||
    if (button == SDL_BUTTON_LEFT) {
 | 
			
		||||
        if (state == SDL_PRESSED) {
 | 
			
		||||
            TouchPressed((unsigned)std::max(x, 0), (unsigned)std::max(y, 0));
 | 
			
		||||
        } else {
 | 
			
		||||
            TouchReleased();
 | 
			
		||||
        }
 | 
			
		||||
    } else if (button == SDL_BUTTON_RIGHT) {
 | 
			
		||||
        if (state == SDL_PRESSED) {
 | 
			
		||||
            motion_emu->BeginTilt(x, y);
 | 
			
		||||
        } else {
 | 
			
		||||
            motion_emu->EndTilt();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@@ -54,6 +60,7 @@ EmuWindow_SDL2::EmuWindow_SDL2() {
 | 
			
		||||
    keyboard_id = KeyMap::NewDeviceId();
 | 
			
		||||
 | 
			
		||||
    ReloadSetKeymaps();
 | 
			
		||||
    motion_emu = std::make_unique<Motion::MotionEmu>(*this);
 | 
			
		||||
 | 
			
		||||
    SDL_SetMainReady();
 | 
			
		||||
 | 
			
		||||
@@ -109,6 +116,7 @@ EmuWindow_SDL2::EmuWindow_SDL2() {
 | 
			
		||||
EmuWindow_SDL2::~EmuWindow_SDL2() {
 | 
			
		||||
    SDL_GL_DeleteContext(gl_context);
 | 
			
		||||
    SDL_Quit();
 | 
			
		||||
    motion_emu = nullptr;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void EmuWindow_SDL2::SwapBuffers() {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,8 +4,10 @@
 | 
			
		||||
 | 
			
		||||
#pragma once
 | 
			
		||||
 | 
			
		||||
#include <memory>
 | 
			
		||||
#include <utility>
 | 
			
		||||
#include "core/frontend/emu_window.h"
 | 
			
		||||
#include "core/frontend/motion_emu.h"
 | 
			
		||||
 | 
			
		||||
struct SDL_Window;
 | 
			
		||||
 | 
			
		||||
@@ -61,4 +63,7 @@ private:
 | 
			
		||||
 | 
			
		||||
    /// Device id of keyboard for use with KeyMap
 | 
			
		||||
    int keyboard_id;
 | 
			
		||||
 | 
			
		||||
    /// Motion sensors emulation
 | 
			
		||||
    std::unique_ptr<Motion::MotionEmu> motion_emu;
 | 
			
		||||
};
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user