Pass Android gamepad key press to virtual key function of example
This commit is contained in:
parent
b1a07ddff8
commit
de0c29b586
2 changed files with 57 additions and 9 deletions
|
|
@ -1062,6 +1062,44 @@ int32_t VulkanExampleBase::handleAppInput(struct android_app* app, AInputEvent*
|
||||||
}
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (AInputEvent_getType(event) == AINPUT_EVENT_TYPE_KEY)
|
||||||
|
{
|
||||||
|
int32_t keyCode = AKeyEvent_getKeyCode((const AInputEvent*)event);
|
||||||
|
int32_t action = AKeyEvent_getAction((const AInputEvent*)event);
|
||||||
|
int32_t button = 0;
|
||||||
|
|
||||||
|
if (action == AKEY_EVENT_ACTION_UP)
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
switch (keyCode)
|
||||||
|
{
|
||||||
|
case AKEYCODE_BUTTON_A:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_A);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_B:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_B);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_X:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_X);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_Y:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_Y);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_L1:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_L1);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_R1:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_R1);
|
||||||
|
break;
|
||||||
|
case AKEYCODE_BUTTON_START:
|
||||||
|
vulkanExample->keyPressed(GAMEPAD_BUTTON_START);
|
||||||
|
break;
|
||||||
|
};
|
||||||
|
|
||||||
|
LOGD("Button %d pressed", keyCode);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -40,6 +40,14 @@
|
||||||
#include "vulkanTextureLoader.hpp"
|
#include "vulkanTextureLoader.hpp"
|
||||||
#include "vulkanMeshLoader.hpp"
|
#include "vulkanMeshLoader.hpp"
|
||||||
|
|
||||||
|
#define GAMEPAD_BUTTON_A 0x1000
|
||||||
|
#define GAMEPAD_BUTTON_B 0x1001
|
||||||
|
#define GAMEPAD_BUTTON_X 0x1002
|
||||||
|
#define GAMEPAD_BUTTON_Y 0x1003
|
||||||
|
#define GAMEPAD_BUTTON_L1 0x1004
|
||||||
|
#define GAMEPAD_BUTTON_R1 0x1005
|
||||||
|
#define GAMEPAD_BUTTON_START 0x1006
|
||||||
|
|
||||||
class VulkanExampleBase
|
class VulkanExampleBase
|
||||||
{
|
{
|
||||||
private:
|
private:
|
||||||
|
|
@ -158,15 +166,8 @@ public:
|
||||||
VkImageView view;
|
VkImageView view;
|
||||||
} depthStencil;
|
} depthStencil;
|
||||||
|
|
||||||
// OS specific
|
// Gamepad state (only one pad supported)
|
||||||
#if defined(_WIN32)
|
|
||||||
HWND window;
|
|
||||||
HINSTANCE windowInstance;
|
|
||||||
#elif defined(__ANDROID__)
|
|
||||||
android_app* androidApp;
|
|
||||||
// true if application has focused, false if moved to background
|
|
||||||
bool focused = false;
|
|
||||||
// Gamepad state (only one)
|
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
struct
|
struct
|
||||||
|
|
@ -177,6 +178,15 @@ public:
|
||||||
float rz = 0.0f;
|
float rz = 0.0f;
|
||||||
} axes;
|
} axes;
|
||||||
} gamePadState;
|
} gamePadState;
|
||||||
|
|
||||||
|
// OS specific
|
||||||
|
#if defined(_WIN32)
|
||||||
|
HWND window;
|
||||||
|
HINSTANCE windowInstance;
|
||||||
|
#elif defined(__ANDROID__)
|
||||||
|
android_app* androidApp;
|
||||||
|
// true if application has focused, false if moved to background
|
||||||
|
bool focused = false;
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
struct {
|
struct {
|
||||||
bool left = false;
|
bool left = false;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue