WIP MacOS support for smoke test
This commit is contained in:
@@ -134,6 +134,8 @@ typedef struct
|
|||||||
KrSurfaceMapIndex surfaceHandle;
|
KrSurfaceMapIndex surfaceHandle;
|
||||||
#if defined(_WIN32) || defined(_WIN64)
|
#if defined(_WIN32) || defined(_WIN64)
|
||||||
void* hWnd; // Can static cast to HWND
|
void* hWnd; // Can static cast to HWND
|
||||||
|
#elif defined(__APPLE__)
|
||||||
|
void* view; // Can static cast to NSView
|
||||||
#endif
|
#endif
|
||||||
} KrCreateWindowSurfaceInfo;
|
} KrCreateWindowSurfaceInfo;
|
||||||
|
|
||||||
|
|||||||
@@ -20,12 +20,12 @@ add_custom_target(kraken_cube_assets ALL
|
|||||||
)
|
)
|
||||||
|
|
||||||
if (WIN32)
|
if (WIN32)
|
||||||
add_executable(kraken_cube WIN32 main_win.cpp hello_cube.cpp)
|
add_executable(kraken_cube WIN32 main_win.cpp harness.cpp hello_cube.cpp)
|
||||||
add_compile_definitions(UNICODE)
|
add_compile_definitions(UNICODE)
|
||||||
list (APPEND EXTRA_LIBS shcore)
|
list (APPEND EXTRA_LIBS shcore)
|
||||||
|
|
||||||
else(WIN32)
|
else(WIN32)
|
||||||
add_executable(kraken_cube main_macos.mm hello_cube.cpp)
|
add_executable(kraken_cube main_macos.mm harness.cpp hello_cube.cpp)
|
||||||
set(CMAKE_CXX_COMPILER "clang++")
|
set(CMAKE_CXX_COMPILER "clang++")
|
||||||
endif(WIN32)
|
endif(WIN32)
|
||||||
|
|
||||||
|
|||||||
@@ -32,7 +32,7 @@
|
|||||||
#include "kraken.h"
|
#include "kraken.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
|
||||||
void smoke_load()
|
bool smoke_load()
|
||||||
{
|
{
|
||||||
enum
|
enum
|
||||||
{
|
{
|
||||||
@@ -45,6 +45,17 @@ void smoke_load()
|
|||||||
kCameraNodeHandle = 10
|
kCameraNodeHandle = 10
|
||||||
};
|
};
|
||||||
|
|
||||||
|
KrLoadResourceInfo load_resource_info = {};
|
||||||
|
load_resource_info.sType = KR_STRUCTURE_TYPE_LOAD_RESOURCE;
|
||||||
|
load_resource_info.resourceHandle = 1;
|
||||||
|
load_resource_info.pResourcePath = "kraken_cube.krbundle";
|
||||||
|
KrResult res = KrLoadResource(&load_resource_info);
|
||||||
|
if (res != KR_SUCCESS) {
|
||||||
|
//printf("Failed to load resource: %s\n", arg);
|
||||||
|
KrShutdown();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
KrMapResourceInfo map_skybox_resource = { KR_STRUCTURE_TYPE_MAP_RESOURCE };
|
KrMapResourceInfo map_skybox_resource = { KR_STRUCTURE_TYPE_MAP_RESOURCE };
|
||||||
map_skybox_resource.pResourceName = "skybox";
|
map_skybox_resource.pResourceName = "skybox";
|
||||||
@@ -57,7 +68,7 @@ void smoke_load()
|
|||||||
KrCreateSceneInfo create_scene_info = { KR_STRUCTURE_TYPE_CREATE_SCENE };
|
KrCreateSceneInfo create_scene_info = { KR_STRUCTURE_TYPE_CREATE_SCENE };
|
||||||
create_scene_info.resourceHandle = kSceneResourceHandle;
|
create_scene_info.resourceHandle = kSceneResourceHandle;
|
||||||
create_scene_info.pSceneName = "my_scene";
|
create_scene_info.pSceneName = "my_scene";
|
||||||
KrResult res = KrCreateScene(&create_scene_info);
|
res = KrCreateScene(&create_scene_info);
|
||||||
assert(res == KR_SUCCESS);
|
assert(res == KR_SUCCESS);
|
||||||
|
|
||||||
// Add a camera to the scene
|
// Add a camera to the scene
|
||||||
|
|||||||
@@ -31,4 +31,4 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
void smoke_load();
|
bool smoke_load();
|
||||||
|
|||||||
@@ -31,6 +31,7 @@
|
|||||||
|
|
||||||
#import "Cocoa/Cocoa.h"
|
#import "Cocoa/Cocoa.h"
|
||||||
#include "kraken.h"
|
#include "kraken.h"
|
||||||
|
#include "harness.h"
|
||||||
|
|
||||||
using namespace kraken;
|
using namespace kraken;
|
||||||
|
|
||||||
@@ -57,6 +58,16 @@ int main(int argc, const char * argv[])
|
|||||||
NSWindowController * windowController = [[NSWindowController alloc] initWithWindow:window];
|
NSWindowController * windowController = [[NSWindowController alloc] initWithWindow:window];
|
||||||
[windowController autorelease];
|
[windowController autorelease];
|
||||||
|
|
||||||
|
NSView *view = [[NSView alloc] initWithFrame:NSMakeRect(0, 0, 640, 480)];
|
||||||
|
[view setWantsLayer:YES];
|
||||||
|
view.layer.backgroundColor = [[NSColor purpleColor] CGColor];
|
||||||
|
|
||||||
|
if (!test_init(static_cast<void*>(view))) {
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
[window.contentView addSubview:view];
|
||||||
|
|
||||||
[window orderFrontRegardless];
|
[window orderFrontRegardless];
|
||||||
[NSApp run];
|
[NSApp run];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,7 @@
|
|||||||
#include <shellscalingapi.h>
|
#include <shellscalingapi.h>
|
||||||
#include "kraken.h"
|
#include "kraken.h"
|
||||||
#include "hello_cube.h"
|
#include "hello_cube.h"
|
||||||
|
#include "harness.h"
|
||||||
|
|
||||||
using namespace kraken;
|
using namespace kraken;
|
||||||
|
|
||||||
@@ -60,59 +61,18 @@ int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine
|
|||||||
return 2;
|
return 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
KrInitializeInfo init_info = {};
|
if (!test_init(static_cast<void*>(hWnd))) {
|
||||||
init_info.sType = KR_STRUCTURE_TYPE_INITIALIZE;
|
|
||||||
init_info.resourceMapSize = 1024;
|
|
||||||
init_info.nodeMapSize = 1024;
|
|
||||||
KrResult res = KrInitialize(&init_info);
|
|
||||||
if (res != KR_SUCCESS) {
|
|
||||||
// printf("Failed to initialize Kraken!\n");
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
KrLoadResourceInfo load_resource_info = {};
|
|
||||||
load_resource_info.sType = KR_STRUCTURE_TYPE_LOAD_RESOURCE;
|
|
||||||
load_resource_info.resourceHandle = 1;
|
|
||||||
load_resource_info.pResourcePath = "kraken_cube.krbundle";
|
|
||||||
res = KrLoadResource(&load_resource_info);
|
|
||||||
if (res != KR_SUCCESS) {
|
|
||||||
//printf("Failed to load resource: %s\n", arg);
|
|
||||||
KrShutdown();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
KrCreateWindowSurfaceInfo create_surface_info = {};
|
|
||||||
create_surface_info.sType = KR_STRUCTURE_TYPE_CREATE_WINDOW_SURFACE;
|
|
||||||
create_surface_info.surfaceHandle = 1;
|
|
||||||
create_surface_info.hWnd = static_cast<void*>(hWnd);
|
|
||||||
res = KrCreateWindowSurface(&create_surface_info);
|
|
||||||
if (res != KR_SUCCESS) {
|
|
||||||
//printf("Failed to create window surface.\n");
|
|
||||||
KrShutdown();
|
|
||||||
return 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
smoke_load();
|
|
||||||
|
|
||||||
while (GetMessage(&msg, NULL, 0, 0) > 0) {
|
while (GetMessage(&msg, NULL, 0, 0) > 0) {
|
||||||
DispatchMessage(&msg);
|
DispatchMessage(&msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (!test_shutdown()) {
|
||||||
// KrShutdown will delete the window surfaces for us; however, we
|
|
||||||
// include this here for code coverage in tests.
|
|
||||||
KrDeleteWindowSurfaceInfo delete_surface_info = {};
|
|
||||||
delete_surface_info.sType = KR_STRUCTURE_TYPE_DELETE_WINDOW_SURFACE;
|
|
||||||
delete_surface_info.surfaceHandle = 1;
|
|
||||||
res = KrDeleteWindowSurface(&delete_surface_info);
|
|
||||||
if (res != KR_SUCCESS) {
|
|
||||||
//printf("Failed to delete window surface.\n");
|
|
||||||
KrShutdown();
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
KrShutdown();
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user