Fix tvOS build, move common UIKit stuff into it's own folder
This commit is contained in:
parent
50b6c33bbc
commit
2771be2a57
8 changed files with 64 additions and 366 deletions
|
@ -35,7 +35,7 @@ endif()
|
||||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "iOS")
|
||||||
message("iOS build detected!")
|
message("iOS build detected!")
|
||||||
|
|
||||||
set(ENABLE_VULKAN TRUE)
|
#set(ENABLE_VULKAN TRUE)
|
||||||
set(ENABLE_DARWIN TRUE)
|
set(ENABLE_DARWIN TRUE)
|
||||||
set(ENABLE_IOS TRUE)
|
set(ENABLE_IOS TRUE)
|
||||||
set(ENABLE_METAL TRUE)
|
set(ENABLE_METAL TRUE)
|
||||||
|
@ -44,7 +44,7 @@ endif()
|
||||||
if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS")
|
if(${CMAKE_SYSTEM_NAME} STREQUAL "tvOS")
|
||||||
message("tvOS build detected!")
|
message("tvOS build detected!")
|
||||||
|
|
||||||
set(ENABLE_VULKAN TRUE)
|
#set(ENABLE_VULKAN TRUE)
|
||||||
set(ENABLE_DARWIN TRUE)
|
set(ENABLE_DARWIN TRUE)
|
||||||
set(ENABLE_TVOS TRUE)
|
set(ENABLE_TVOS TRUE)
|
||||||
set(ENABLE_METAL TRUE)
|
set(ENABLE_METAL TRUE)
|
||||||
|
|
|
@ -8,7 +8,7 @@ function(add_shader_command)
|
||||||
set(EXTRA_PLATFORM_ARG "0")
|
set(EXTRA_PLATFORM_ARG "0")
|
||||||
|
|
||||||
# if targeting ios, we want to use the host's shader compiler
|
# if targeting ios, we want to use the host's shader compiler
|
||||||
if(ENABLE_IOS)
|
if(ENABLE_IOS OR ENABLE_TVOS)
|
||||||
set(SHADER_COMPILER_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../build/bin/Debug/ShaderCompilerTool")
|
set(SHADER_COMPILER_COMMAND "${CMAKE_CURRENT_SOURCE_DIR}/../build/bin/Debug/ShaderCompilerTool")
|
||||||
set(EXTRA_PLATFORM_ARG "1")
|
set(EXTRA_PLATFORM_ARG "1")
|
||||||
endif()
|
endif()
|
||||||
|
@ -35,7 +35,7 @@ endfunction()
|
||||||
|
|
||||||
# add shaders to target
|
# add shaders to target
|
||||||
function(add_shaders)
|
function(add_shaders)
|
||||||
if(NOT ENABLE_IOS)
|
if(NOT ENABLE_IOS AND NOT ENABLE_TVOS)
|
||||||
cmake_parse_arguments(ARGS "" "TARGET" "SHADERS" ${ARGN})
|
cmake_parse_arguments(ARGS "" "TARGET" "SHADERS" ${ARGN})
|
||||||
|
|
||||||
foreach(SHADER_FILENAME ${ARGS_SHADERS})
|
foreach(SHADER_FILENAME ${ARGS_SHADERS})
|
||||||
|
|
|
@ -32,13 +32,13 @@ find_library(CORE_GRAPHICS CoreGraphics)
|
||||||
|
|
||||||
add_platform(
|
add_platform(
|
||||||
MAIN_FILE
|
MAIN_FILE
|
||||||
ViewController.mm.in
|
../uikit/ViewController.mm.in
|
||||||
SRC
|
SRC
|
||||||
MACOSX_BUNDLE
|
MACOSX_BUNDLE
|
||||||
${APP_HEADER_FILES}
|
${APP_HEADER_FILES}
|
||||||
${APP_SOURCE_FILES}
|
${APP_SOURCE_FILES}
|
||||||
${RESOURCES}
|
${RESOURCES}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/file.mm
|
${CMAKE_CURRENT_SOURCE_DIR}/../uikit/file.mm
|
||||||
EXECUTABLE_PROPERTIES
|
EXECUTABLE_PROPERTIES
|
||||||
MACOSX_BUNDLE ON
|
MACOSX_BUNDLE ON
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
|
|
|
@ -3,24 +3,23 @@ cmake_minimum_required (VERSION 3.7)
|
||||||
include(BundleUtilities)
|
include(BundleUtilities)
|
||||||
|
|
||||||
set(APP_HEADER_FILES
|
set(APP_HEADER_FILES
|
||||||
${PROJECT_SOURCE_DIR}/platforms/tvos/AppDelegate.h
|
${PROJECT_SOURCE_DIR}/platforms/tvos/AppDelegate.h
|
||||||
)
|
)
|
||||||
|
|
||||||
set(APP_SOURCE_FILES
|
set(APP_SOURCE_FILES
|
||||||
${PROJECT_SOURCE_DIR}/platforms/tvos/AppDelegate.m
|
${PROJECT_SOURCE_DIR}/platforms/tvos/AppDelegate.m
|
||||||
${PROJECT_SOURCE_DIR}/platforms/tvos/main.m
|
${PROJECT_SOURCE_DIR}/platforms/tvos/main.m
|
||||||
)
|
)
|
||||||
|
|
||||||
set(RESOURCES
|
set(RESOURCES
|
||||||
${PROJECT_SOURCE_DIR}/platforms/tvos/Main.storyboard
|
${PROJECT_SOURCE_DIR}/platforms/tvos/Main.storyboard
|
||||||
${PROJECT_SOURCE_DIR}/platforms/tvos/LaunchScreen.storyboard
|
${PROJECT_SOURCE_DIR}/platforms/tvos/LaunchScreen.storyboard
|
||||||
${CMAKE_SOURCE_DIR}/data
|
${CMAKE_SOURCE_DIR}/data
|
||||||
${CMAKE_BINARY_DIR}/shaders
|
${CMAKE_BINARY_DIR}/shaders
|
||||||
)
|
)
|
||||||
|
|
||||||
include(../../cmake/AddPlatformExecutable.cmake)
|
include(../../cmake/AddPlatformExecutable.cmake)
|
||||||
|
|
||||||
# Locate system libraries on iOS
|
|
||||||
find_library(UIKIT UIKit)
|
find_library(UIKIT UIKit)
|
||||||
find_library(FOUNDATION Foundation)
|
find_library(FOUNDATION Foundation)
|
||||||
find_library(MOBILECORESERVICES MobileCoreServices)
|
find_library(MOBILECORESERVICES MobileCoreServices)
|
||||||
|
@ -28,88 +27,76 @@ find_library(CFNETWORK CFNetwork)
|
||||||
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
find_library(SYSTEMCONFIGURATION SystemConfiguration)
|
||||||
find_library(GAMECONTROLLER GameController)
|
find_library(GAMECONTROLLER GameController)
|
||||||
find_library(QUARTZ QuartzCore)
|
find_library(QUARTZ QuartzCore)
|
||||||
|
find_library(METAL Metal)
|
||||||
# link the frameworks located above
|
|
||||||
|
|
||||||
|
|
||||||
add_platform(
|
add_platform(
|
||||||
MAIN_FILE
|
MAIN_FILE
|
||||||
ViewController.mm.in
|
../uikit/ViewController.mm.in
|
||||||
SRC
|
SRC
|
||||||
MACOSX_BUNDLE
|
MACOSX_BUNDLE
|
||||||
${APP_HEADER_FILES}
|
${APP_HEADER_FILES}
|
||||||
${APP_SOURCE_FILES}
|
${APP_SOURCE_FILES}
|
||||||
${RESOURCES}
|
${RESOURCES}
|
||||||
${CMAKE_CURRENT_SOURCE_DIR}/file.mm
|
${CMAKE_CURRENT_SOURCE_DIR}/../uikit/file.mm
|
||||||
EXECUTABLE_PROPERTIES
|
EXECUTABLE_PROPERTIES
|
||||||
MACOSX_BUNDLE ON
|
MACOSX_BUNDLE ON
|
||||||
LINK_LIBRARIES
|
LINK_LIBRARIES
|
||||||
Core
|
Core
|
||||||
GFXMetal
|
GFXMetal
|
||||||
${UIKIT}
|
${UIKIT}
|
||||||
${FOUNDATION}
|
${FOUNDATION}
|
||||||
${MOBILECORESERVICES}
|
${MOBILECORESERVICES}
|
||||||
${CFNETWORK}
|
${CFNETWORK}
|
||||||
${SYSTEMCONFIGURATION}
|
${SYSTEMCONFIGURATION}
|
||||||
${GAMECONTROLLER}
|
${GAMECONTROLLER}
|
||||||
${QUARTZ}
|
${QUARTZ}
|
||||||
GFXMetal
|
${METAL}
|
||||||
|
GFXMetal
|
||||||
COMPILE_OPTIONS
|
COMPILE_OPTIONS
|
||||||
)
|
)
|
||||||
|
|
||||||
function(add_platform_commands APP_NAME)
|
function(add_platform_commands APP_NAME)
|
||||||
set(APP_BUNDLE_IDENTIFIER "com.test.app.fantasy") # <== Set to your app's bundle identifier
|
# set in cmake optionss
|
||||||
|
#set(APP_BUNDLE_IDENTIFIER "com.test.app")
|
||||||
|
#set(CODE_SIGN_IDENTITY "iPhone Developer")
|
||||||
|
#set(DEVELOPMENT_TEAM_ID "aaaa")
|
||||||
|
|
||||||
set(CODE_SIGN_IDENTITY "iPhone Developer") # <== Set to your team ID from Apple
|
set(RESOURCES
|
||||||
set(DEVELOPMENT_TEAM_ID "JM5LKVKH48") # <== Set to your preferred code sign identity, to see list:
|
${PROJECT_SOURCE_DIR}/platforms/tvos/Main.storyboard
|
||||||
# /usr/bin/env xcrun security # <== Set to "1" to target iPhone, set to "2" to target iPad, set to "1,2" to target both
|
${PROJECT_SOURCE_DIR}/platforms/tvos/LaunchScreen.storyboard
|
||||||
set(RESOURCES
|
${CMAKE_SOURCE_DIR}/data
|
||||||
${PROJECT_SOURCE_DIR}/engine/platforms/tvos/Main.storyboard
|
${CMAKE_BINARY_DIR}/shaders
|
||||||
${PROJECT_SOURCE_DIR}/engine/platforms/tvos/LaunchScreen.storyboard
|
)
|
||||||
${CMAKE_SOURCE_DIR}/data
|
|
||||||
${CMAKE_BINARY_DIR}/shaders
|
|
||||||
)
|
|
||||||
|
|
||||||
set(PRODUCT_NAME ${APP_NAME})
|
set(PRODUCT_NAME ${APP_NAME})
|
||||||
set(EXECUTABLE_NAME ${APP_NAME})
|
set(EXECUTABLE_NAME ${APP_NAME})
|
||||||
set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME})
|
set(MACOSX_BUNDLE_EXECUTABLE_NAME ${APP_NAME})
|
||||||
set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER})
|
set(MACOSX_BUNDLE_INFO_STRING ${APP_BUNDLE_IDENTIFIER})
|
||||||
set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER})
|
set(MACOSX_BUNDLE_GUI_IDENTIFIER ${APP_BUNDLE_IDENTIFIER})
|
||||||
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
|
set(MACOSX_BUNDLE_BUNDLE_NAME ${APP_BUNDLE_IDENTIFIER})
|
||||||
set(MACOSX_BUNDLE_ICON_FILE "")
|
set(MACOSX_BUNDLE_ICON_FILE "")
|
||||||
set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0")
|
set(MACOSX_BUNDLE_LONG_VERSION_STRING "1.0")
|
||||||
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0")
|
set(MACOSX_BUNDLE_SHORT_VERSION_STRING "1.0")
|
||||||
set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0")
|
set(MACOSX_BUNDLE_BUNDLE_VERSION "1.0")
|
||||||
set(MACOSX_BUNDLE_COPYRIGHT "Copyright YOU")
|
set(MACOSX_BUNDLE_COPYRIGHT "Copyright YOU")
|
||||||
set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET})
|
set(MACOSX_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET})
|
||||||
|
|
||||||
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -fobjc-arc")
|
configure_file(${PROJECT_SOURCE_DIR}/platforms/tvos/plist.in ${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}Info.plist)
|
||||||
|
|
||||||
configure_file(${PROJECT_SOURCE_DIR}/engine/platforms/tvos/plist.in ${CMAKE_BINARY_DIR}/${add_platform_executable_TARGET}Info.plist)
|
|
||||||
|
|
||||||
set_target_properties(${APP_NAME} PROPERTIES
|
|
||||||
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
|
|
||||||
RESOURCE "${RESOURCES}"
|
|
||||||
XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
|
|
||||||
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}
|
|
||||||
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
|
|
||||||
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
|
|
||||||
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY ${DEVICE_FAMILY}
|
|
||||||
MACOSX_BUNDLE TRUE
|
|
||||||
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/${APP_NAME}Info.plist"
|
|
||||||
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES
|
|
||||||
XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES NO
|
|
||||||
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
|
|
||||||
XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES
|
|
||||||
XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES
|
|
||||||
)
|
|
||||||
|
|
||||||
# Set the app's linker search path to the default location on iOS
|
|
||||||
set_target_properties(
|
|
||||||
${APP_NAME}
|
|
||||||
PROPERTIES
|
|
||||||
XCODE_ATTRIBUTE_LD_RUNPATH_SEARCH_PATHS
|
|
||||||
"@executable_path/Frameworks"
|
|
||||||
)
|
|
||||||
|
|
||||||
|
set_target_properties(${APP_NAME} PROPERTIES
|
||||||
|
XCODE_ATTRIBUTE_DEBUG_INFORMATION_FORMAT "dwarf-with-dsym"
|
||||||
|
RESOURCE "${RESOURCES}"
|
||||||
|
XCODE_ATTRIBUTE_GCC_PRECOMPILE_PREFIX_HEADER "YES"
|
||||||
|
XCODE_ATTRIBUTE_IPHONEOS_DEPLOYMENT_TARGET ${DEPLOYMENT_TARGET}
|
||||||
|
XCODE_ATTRIBUTE_CODE_SIGN_IDENTITY ${CODE_SIGN_IDENTITY}
|
||||||
|
XCODE_ATTRIBUTE_DEVELOPMENT_TEAM ${DEVELOPMENT_TEAM_ID}
|
||||||
|
XCODE_ATTRIBUTE_TARGETED_DEVICE_FAMILY ${DEVICE_FAMILY}
|
||||||
|
MACOSX_BUNDLE TRUE
|
||||||
|
MACOSX_BUNDLE_INFO_PLIST "${CMAKE_BINARY_DIR}/${APP_NAME}Info.plist"
|
||||||
|
XCODE_ATTRIBUTE_CLANG_ENABLE_OBJC_ARC YES
|
||||||
|
XCODE_ATTRIBUTE_COMBINE_HIDPI_IMAGES NO
|
||||||
|
XCODE_ATTRIBUTE_INSTALL_PATH "$(LOCAL_APPS_DIR)"
|
||||||
|
XCODE_ATTRIBUTE_ENABLE_TESTABILITY YES
|
||||||
|
XCODE_ATTRIBUTE_GCC_SYMBOLS_PRIVATE_EXTERN YES
|
||||||
|
)
|
||||||
endfunction()
|
endfunction()
|
||||||
|
|
|
@ -1,259 +0,0 @@
|
||||||
#include <MetalKit/MetalKit.h>
|
|
||||||
#include <gfx_metal.hpp>
|
|
||||||
#include <GameController/GameController.h>
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
|
|
||||||
#include <engine.hpp>
|
|
||||||
|
|
||||||
#include <@APP_INCLUDE@>
|
|
||||||
|
|
||||||
@APP_CLASS@* app = nullptr;
|
|
||||||
|
|
||||||
int maxFPS = 60;
|
|
||||||
|
|
||||||
std::array<bool, 8> inputKeys;
|
|
||||||
|
|
||||||
float rightX = 0.0f, rightY = 0.0f;
|
|
||||||
float leftX = 0.0f, leftY = 0.0f;
|
|
||||||
|
|
||||||
@interface GameView : UIView
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation GameView
|
|
||||||
|
|
||||||
+ (Class) layerClass {
|
|
||||||
return [CAMetalLayer class];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)draw {
|
|
||||||
engine->update(1.0f / (float)maxFPS);
|
|
||||||
engine->begin_frame(1.0f / (float)maxFPS);
|
|
||||||
engine->render(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void) controllerConnected {
|
|
||||||
GCController* controller = [GCController controllers][0];
|
|
||||||
[[controller extendedGamepad] setValueChangedHandler:^(GCExtendedGamepad * _Nonnull gamepad, GCControllerElement * _Nonnull element) {
|
|
||||||
const auto& handle_element = [element](int index, GCControllerElement* e) {
|
|
||||||
if(element == e)
|
|
||||||
inputKeys[index] = [(GCControllerButtonInput*)e value] == 1.0f;
|
|
||||||
};
|
|
||||||
|
|
||||||
handle_element(0, [[controller extendedGamepad] buttonA]);
|
|
||||||
handle_element(1, [[controller extendedGamepad] buttonB]);
|
|
||||||
handle_element(2, [[controller extendedGamepad] buttonX]);
|
|
||||||
handle_element(3, [[controller extendedGamepad] buttonY]);
|
|
||||||
|
|
||||||
if(element == [[controller extendedGamepad] dpad]) {
|
|
||||||
inputKeys[4] = [[[[controller extendedGamepad] dpad] up] value] == 1.0f;
|
|
||||||
inputKeys[5] = [[[[controller extendedGamepad] dpad] down] value] == 1.0f;
|
|
||||||
inputKeys[6] = [[[[controller extendedGamepad] dpad] left] value] == 1.0f;
|
|
||||||
inputKeys[7] = [[[[controller extendedGamepad] dpad] right] value] == 1.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(element == [[controller extendedGamepad] leftThumbstick]) {
|
|
||||||
leftX = [[[[controller extendedGamepad] leftThumbstick] xAxis] value];
|
|
||||||
leftY = [[[[controller extendedGamepad] leftThumbstick] yAxis] value];
|
|
||||||
}
|
|
||||||
|
|
||||||
if(element == [[controller extendedGamepad] rightThumbstick]) {
|
|
||||||
rightX = [[[[controller extendedGamepad] rightThumbstick] xAxis] value];
|
|
||||||
rightY = [[[[controller extendedGamepad] rightThumbstick] yAxis] value];
|
|
||||||
}
|
|
||||||
}];
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
@interface GameViewController : UIViewController
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
float mouse_x = 0.0f, mouse_y = 0.0f;
|
|
||||||
bool mouse_down = false;
|
|
||||||
|
|
||||||
@interface GameViewController ()
|
|
||||||
{
|
|
||||||
GameView* view;
|
|
||||||
}
|
|
||||||
@end
|
|
||||||
|
|
||||||
@implementation GameViewController
|
|
||||||
|
|
||||||
int width, height;
|
|
||||||
int drawable_width, drawable_height;
|
|
||||||
|
|
||||||
- (void)viewDidLoad {
|
|
||||||
[super viewDidLoad];
|
|
||||||
view = (GameView*)self.view;
|
|
||||||
view.userInteractionEnabled = true;
|
|
||||||
|
|
||||||
CADisplayLink* displayLink = [CADisplayLink displayLinkWithTarget:view selector:@selector(draw)];
|
|
||||||
[displayLink addToRunLoop:NSRunLoop.mainRunLoop forMode:NSDefaultRunLoopMode];
|
|
||||||
|
|
||||||
width = [view frame].size.width;
|
|
||||||
height = [view frame].size.height;
|
|
||||||
|
|
||||||
drawable_width = [view frame].size.width * [view contentScaleFactor];
|
|
||||||
drawable_height = [view frame].size.height * [view contentScaleFactor];
|
|
||||||
|
|
||||||
engine = new prism::Engine(0, nullptr);
|
|
||||||
|
|
||||||
app = new @APP_CLASS@();
|
|
||||||
engine->set_app(app);
|
|
||||||
|
|
||||||
GFXCreateInfo createInfo = {};
|
|
||||||
createInfo.api_validation_enabled = true;
|
|
||||||
|
|
||||||
GFXMetal* gfx = new GFXMetal();
|
|
||||||
gfx->initialize(createInfo);
|
|
||||||
engine->set_gfx(gfx);
|
|
||||||
|
|
||||||
app_main(engine);
|
|
||||||
|
|
||||||
engine->add_window((void*)CFBridgingRetain([view layer]), 0, {static_cast<uint32_t>(width), static_cast<uint32_t>(height)});
|
|
||||||
|
|
||||||
app->initialize_render();
|
|
||||||
|
|
||||||
NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
|
|
||||||
[nc addObserver:view
|
|
||||||
selector:@selector(controllerConnected)
|
|
||||||
name:GCControllerDidConnectNotification
|
|
||||||
object:nil];
|
|
||||||
}
|
|
||||||
|
|
||||||
- (void)didReceiveMemoryWarning {
|
|
||||||
[super didReceiveMemoryWarning];
|
|
||||||
// Dispose of any resources that can be recreated.
|
|
||||||
}
|
|
||||||
|
|
||||||
-(bool)prefersStatusBarHidden {
|
|
||||||
return YES;
|
|
||||||
}
|
|
||||||
|
|
||||||
@end
|
|
||||||
|
|
||||||
void platform::capture_mouse(const bool capture) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
const char* platform::get_name() {
|
|
||||||
return "tvOS";
|
|
||||||
}
|
|
||||||
|
|
||||||
Offset platform::get_cursor_position() {
|
|
||||||
return {static_cast<int32_t>(mouse_x), static_cast<int32_t>(mouse_y)};
|
|
||||||
}
|
|
||||||
|
|
||||||
std::tuple<float, float> platform::get_right_stick_position() {
|
|
||||||
return {rightX, rightY};
|
|
||||||
}
|
|
||||||
|
|
||||||
std::tuple<float, float> platform::get_left_stick_position() {
|
|
||||||
return {leftX, leftY};
|
|
||||||
}
|
|
||||||
|
|
||||||
bool platform::get_key_down(InputButton key) {
|
|
||||||
if(key == InputButton::ButtonA)
|
|
||||||
return inputKeys[0];
|
|
||||||
|
|
||||||
if(key == InputButton::ButtonB)
|
|
||||||
return inputKeys[1];
|
|
||||||
|
|
||||||
if(key == InputButton::ButtonX)
|
|
||||||
return inputKeys[2];
|
|
||||||
|
|
||||||
if(key == InputButton::ButtonY)
|
|
||||||
return inputKeys[3];
|
|
||||||
|
|
||||||
if(key == InputButton::DPadUp)
|
|
||||||
return inputKeys[4];
|
|
||||||
|
|
||||||
if(key == InputButton::DPadDown)
|
|
||||||
return inputKeys[5];
|
|
||||||
|
|
||||||
if(key == InputButton::DPadLeft)
|
|
||||||
return inputKeys[6];
|
|
||||||
|
|
||||||
if(key == InputButton::DPadRight)
|
|
||||||
return inputKeys[7];
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
int platform::open_window(const std::string_view title, const Rectangle rect, const WindowFlags flags) {
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
void platform::set_window_title(const int index, const std::string_view title) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
bool platform::is_window_focused(const int index) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void platform::set_window_focused(const int index) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Extent platform::get_window_size(const int index) {
|
|
||||||
return {static_cast<uint32_t>(width), static_cast<uint32_t>(height)};
|
|
||||||
}
|
|
||||||
|
|
||||||
Extent platform::get_window_drawable_size(const int index) {
|
|
||||||
return {static_cast<uint32_t>(drawable_width), static_cast<uint32_t>(drawable_height)};
|
|
||||||
}
|
|
||||||
|
|
||||||
Offset platform::get_window_position(const int index) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void platform::set_window_size(const int index, const Extent extent) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void platform::set_window_position(const int index, const Offset offset) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void platform::close_window(const int index) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
char* platform::translate_keycode(const unsigned int keycode) {
|
|
||||||
return nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
int platform::get_keycode(const InputButton button) {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle platform::get_monitor_resolution() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Rectangle platform::get_monitor_work_area() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
Offset platform::get_screen_cursor_position() {
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
float platform::get_window_dpi(const int index) {
|
|
||||||
return 2.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool platform::get_mouse_button_down(const int index) {
|
|
||||||
return mouse_down;
|
|
||||||
}
|
|
||||||
|
|
||||||
float platform::get_monitor_dpi() {
|
|
||||||
return 2.0f;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::tuple<float, float> platform::get_wheel_delta() {
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,30 +0,0 @@
|
||||||
#include "file.hpp"
|
|
||||||
|
|
||||||
#import <Foundation/Foundation.h>
|
|
||||||
#include <array>
|
|
||||||
|
|
||||||
#import <UIKit/UIKit.h>
|
|
||||||
|
|
||||||
#include "string_utils.hpp"
|
|
||||||
|
|
||||||
#include "log.hpp"
|
|
||||||
|
|
||||||
void file::initialize_domain(const FileDomain domain, const AccessMode mode, const std::string_view path) {
|
|
||||||
NSBundle* bundle = [NSBundle mainBundle];
|
|
||||||
NSString* resourceFolderPath = [bundle resourcePath];
|
|
||||||
|
|
||||||
std::string s = std::string(path);
|
|
||||||
s = replace_substring(s, "{resource_dir}", std::string([resourceFolderPath cStringUsingEncoding:NSUTF8StringEncoding]));
|
|
||||||
|
|
||||||
domain_data[(int)domain] = s;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string file::get_writeable_path(const std::string_view path) {
|
|
||||||
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
|
|
||||||
|
|
||||||
NSString* resourceFolderPath = paths[0];
|
|
||||||
|
|
||||||
std::string s = std::string([resourceFolderPath cStringUsingEncoding:NSUTF8StringEncoding]) + "/" + std::string(path);
|
|
||||||
|
|
||||||
return s;
|
|
||||||
}
|
|
Reference in a new issue