mirror of https://github.com/auygun/kaliber.git
Compare commits
3 Commits
2ac1520c9b
...
41a1cfe6f5
Author | SHA1 | Date |
---|---|---|
Attila Uygun | 41a1cfe6f5 | |
Attila Uygun | 92dbf5cd97 | |
Attila Uygun | eb50e547b8 |
|
@ -2,10 +2,13 @@
|
||||||
|
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
#include <android/log.h>
|
#include <android/log.h>
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
#include <windows.h>
|
||||||
#else
|
#else
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
#endif
|
#endif
|
||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
|
#include <format>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
namespace base {
|
namespace base {
|
||||||
|
@ -38,6 +41,10 @@ LogMessage::~LogMessage() {
|
||||||
#if defined(__ANDROID__)
|
#if defined(__ANDROID__)
|
||||||
__android_log_print(ANDROID_LOG_ERROR, "kaliber", "%d [%s:%d] %s",
|
__android_log_print(ANDROID_LOG_ERROR, "kaliber", "%d [%s:%d] %s",
|
||||||
verbosity_level_, filename.c_str(), line_, text.c_str());
|
verbosity_level_, filename.c_str(), line_, text.c_str());
|
||||||
|
#elif defined(_WIN32)
|
||||||
|
std::string s = std::format("{} [{}:{}] {}", verbosity_level_,
|
||||||
|
filename.c_str(), line_, text.c_str());
|
||||||
|
OutputDebugStringA(s.c_str());
|
||||||
#else
|
#else
|
||||||
printf("%d [%s:%d] %s", verbosity_level_, filename.c_str(), line_,
|
printf("%d [%s:%d] %s", verbosity_level_, filename.c_str(), line_,
|
||||||
text.c_str());
|
text.c_str());
|
||||||
|
|
|
@ -108,6 +108,8 @@ void Engine::Initialize() {
|
||||||
|
|
||||||
thread_pool_.Initialize();
|
thread_pool_.Initialize();
|
||||||
|
|
||||||
|
platform_->CreateMainWindow();
|
||||||
|
|
||||||
CreateRendererInternal(RendererType::kVulkan);
|
CreateRendererInternal(RendererType::kVulkan);
|
||||||
|
|
||||||
CreateProjectionMatrix();
|
CreateProjectionMatrix();
|
||||||
|
@ -493,8 +495,8 @@ void Engine::OnWindowDestroyed() {
|
||||||
}
|
}
|
||||||
|
|
||||||
void Engine::OnWindowResized(int width, int height) {
|
void Engine::OnWindowResized(int width, int height) {
|
||||||
if (width != renderer_->GetScreenWidth() ||
|
if (renderer_ && (width != renderer_->GetScreenWidth() ||
|
||||||
height != renderer_->GetScreenHeight()) {
|
height != renderer_->GetScreenHeight())) {
|
||||||
renderer_->OnWindowResized(width, height);
|
renderer_->OnWindowResized(width, height);
|
||||||
CreateProjectionMatrix();
|
CreateProjectionMatrix();
|
||||||
}
|
}
|
||||||
|
|
|
@ -36,10 +36,12 @@ class Platform {
|
||||||
#elif defined(__linux__)
|
#elif defined(__linux__)
|
||||||
Platform();
|
Platform();
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
Platform(HINSTANCE hInstance, int nCmdShow);
|
Platform(HINSTANCE instance, int cmd_show);
|
||||||
#endif
|
#endif
|
||||||
~Platform();
|
~Platform();
|
||||||
|
|
||||||
|
void CreateMainWindow();
|
||||||
|
|
||||||
void Update();
|
void Update();
|
||||||
|
|
||||||
void Exit();
|
void Exit();
|
||||||
|
@ -125,11 +127,10 @@ class Platform {
|
||||||
|
|
||||||
#elif defined(_WIN32)
|
#elif defined(_WIN32)
|
||||||
|
|
||||||
// Global Variables:
|
HINSTANCE instance_;
|
||||||
HINSTANCE hInst; // current instance
|
HWND wnd_;
|
||||||
HWND hWnd;
|
int cmd_show_;
|
||||||
|
|
||||||
// Forward declarations of functions included in this code module:
|
|
||||||
static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
|
static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -292,20 +292,18 @@ void Platform::HandleCmd(android_app* app, int32_t cmd) {
|
||||||
DLOG(0) << "APP_CMD_INIT_WINDOW";
|
DLOG(0) << "APP_CMD_INIT_WINDOW";
|
||||||
if (app->window != NULL) {
|
if (app->window != NULL) {
|
||||||
platform->SetFrameRate(60);
|
platform->SetFrameRate(60);
|
||||||
if (platform->observer_)
|
platform->observer_->OnWindowCreated();
|
||||||
platform->observer_->OnWindowCreated();
|
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case APP_CMD_TERM_WINDOW:
|
case APP_CMD_TERM_WINDOW:
|
||||||
DLOG(0) << "APP_CMD_TERM_WINDOW";
|
DLOG(0) << "APP_CMD_TERM_WINDOW";
|
||||||
if (platform->observer_)
|
platform->observer_->OnWindowDestroyed();
|
||||||
platform->observer_->OnWindowDestroyed();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case APP_CMD_CONFIG_CHANGED:
|
case APP_CMD_CONFIG_CHANGED:
|
||||||
DLOG(0) << "APP_CMD_CONFIG_CHANGED";
|
DLOG(0) << "APP_CMD_CONFIG_CHANGED";
|
||||||
if (platform->app_->window != NULL && platform->observer_)
|
if (platform->app_->window != NULL)
|
||||||
platform->observer_->OnWindowResized(
|
platform->observer_->OnWindowResized(
|
||||||
ANativeWindow_getWidth(app->window),
|
ANativeWindow_getWidth(app->window),
|
||||||
ANativeWindow_getHeight(app->window));
|
ANativeWindow_getHeight(app->window));
|
||||||
|
@ -319,16 +317,14 @@ void Platform::HandleCmd(android_app* app, int32_t cmd) {
|
||||||
DLOG(0) << "APP_CMD_GAINED_FOCUS";
|
DLOG(0) << "APP_CMD_GAINED_FOCUS";
|
||||||
// platform->timer_.Reset();
|
// platform->timer_.Reset();
|
||||||
platform->has_focus_ = true;
|
platform->has_focus_ = true;
|
||||||
if (platform->observer_)
|
platform->observer_->GainedFocus(g_showing_interstitial_ad);
|
||||||
platform->observer_->GainedFocus(g_showing_interstitial_ad);
|
|
||||||
g_showing_interstitial_ad = false;
|
g_showing_interstitial_ad = false;
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case APP_CMD_LOST_FOCUS:
|
case APP_CMD_LOST_FOCUS:
|
||||||
DLOG(0) << "APP_CMD_LOST_FOCUS";
|
DLOG(0) << "APP_CMD_LOST_FOCUS";
|
||||||
platform->has_focus_ = false;
|
platform->has_focus_ = false;
|
||||||
if (platform->observer_)
|
platform->observer_->LostFocus();
|
||||||
platform->observer_->LostFocus();
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case APP_CMD_LOW_MEMORY:
|
case APP_CMD_LOW_MEMORY:
|
||||||
|
@ -370,8 +366,12 @@ Platform::Platform(android_app* app) {
|
||||||
reinterpret_cast<PFN_ANativeWindow_setFrameRateWithChangeStrategy>(
|
reinterpret_cast<PFN_ANativeWindow_setFrameRateWithChangeStrategy>(
|
||||||
dlsym(mLibAndroid, "ANativeWindow_setFrameRateWithChangeStrategy"));
|
dlsym(mLibAndroid, "ANativeWindow_setFrameRateWithChangeStrategy"));
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void Platform::CreateMainWindow() {
|
||||||
|
DCHECK(!app_->window);
|
||||||
Update();
|
Update();
|
||||||
|
DCHECK(app_->window);
|
||||||
}
|
}
|
||||||
|
|
||||||
Platform::~Platform() {
|
Platform::~Platform() {
|
||||||
|
|
|
@ -39,7 +39,9 @@ Platform::Platform() {
|
||||||
LOG(0) << "Root path: " << root_path_.c_str();
|
LOG(0) << "Root path: " << root_path_.c_str();
|
||||||
LOG(0) << "Data path: " << data_path_.c_str();
|
LOG(0) << "Data path: " << data_path_.c_str();
|
||||||
LOG(0) << "Shared data path: " << shared_data_path_.c_str();
|
LOG(0) << "Shared data path: " << shared_data_path_.c_str();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Platform::CreateMainWindow() {
|
||||||
bool res = CreateWindow(800, 1205);
|
bool res = CreateWindow(800, 1205);
|
||||||
CHECK(res) << "Failed to create window.";
|
CHECK(res) << "Failed to create window.";
|
||||||
|
|
||||||
|
@ -103,6 +105,7 @@ void Platform::Update() {
|
||||||
}
|
}
|
||||||
case ClientMessage: {
|
case ClientMessage: {
|
||||||
// WM_DELETE_WINDOW is the only registered type for now.
|
// WM_DELETE_WINDOW is the only registered type for now.
|
||||||
|
observer_->OnWindowDestroyed();
|
||||||
should_exit_ = true;
|
should_exit_ = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -8,7 +8,7 @@
|
||||||
#include "base/log.h"
|
#include "base/log.h"
|
||||||
// #include "base/vecmath.h"
|
// #include "base/vecmath.h"
|
||||||
// #include "engine/input_event.h"
|
// #include "engine/input_event.h"
|
||||||
// #include "engine/platform/platform_observer.h"
|
#include "engine/platform/platform_observer.h"
|
||||||
|
|
||||||
using namespace base;
|
using namespace base;
|
||||||
|
|
||||||
|
@ -16,7 +16,8 @@ namespace eng {
|
||||||
|
|
||||||
void KaliberMain(Platform* platform);
|
void KaliberMain(Platform* platform);
|
||||||
|
|
||||||
Platform::Platform(HINSTANCE hInstance, int nCmdShow) : hInst(hInstance) {
|
Platform::Platform(HINSTANCE instance, int cmd_show)
|
||||||
|
: instance_(instance), cmd_show_(cmd_show) {
|
||||||
LOG(0) << "Initializing platform.";
|
LOG(0) << "Initializing platform.";
|
||||||
|
|
||||||
root_path_ = "./";
|
root_path_ = "./";
|
||||||
|
@ -33,31 +34,44 @@ Platform::Platform(HINSTANCE hInstance, int nCmdShow) : hInst(hInstance) {
|
||||||
wcex.lpfnWndProc = WndProc;
|
wcex.lpfnWndProc = WndProc;
|
||||||
wcex.cbClsExtra = 0;
|
wcex.cbClsExtra = 0;
|
||||||
wcex.cbWndExtra = 0;
|
wcex.cbWndExtra = 0;
|
||||||
wcex.hInstance = hInstance;
|
wcex.hInstance = instance_;
|
||||||
wcex.hIcon =
|
wcex.hIcon = nullptr;
|
||||||
nullptr; // LoadIcon(hInstance, MAKEINTRESOURCE(IDI_WINDOWSPROJECT1));
|
|
||||||
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
|
wcex.hCursor = LoadCursor(nullptr, IDC_ARROW);
|
||||||
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW + 1);
|
wcex.hbrBackground = nullptr;
|
||||||
wcex.lpszMenuName = nullptr; // MAKEINTRESOURCEW(IDC_WINDOWSPROJECT1);
|
wcex.lpszMenuName = nullptr;
|
||||||
wcex.lpszClassName = L"szWindowClass";
|
wcex.lpszClassName = L"KaliberWndClass";
|
||||||
wcex.hIconSm =
|
wcex.hIconSm = nullptr;
|
||||||
nullptr; // LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
|
RegisterClassEx(&wcex);
|
||||||
RegisterClassExW(&wcex);
|
}
|
||||||
|
|
||||||
hWnd = CreateWindowW(L"szWindowClass", L"kaliber", WS_OVERLAPPEDWINDOW,
|
void Platform::CreateMainWindow() {
|
||||||
CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr,
|
wnd_ = CreateWindow(L"KaliberWndClass", L"Kaliber", WS_OVERLAPPEDWINDOW,
|
||||||
hInstance, nullptr);
|
CW_USEDEFAULT, 0, 800, 1205, nullptr, nullptr, instance_,
|
||||||
CHECK(hWnd);
|
this);
|
||||||
|
CHECK(wnd_);
|
||||||
|
|
||||||
ShowWindow(hWnd, nCmdShow);
|
ShowWindow(wnd_, cmd_show_);
|
||||||
UpdateWindow(hWnd);
|
UpdateWindow(wnd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
Platform::~Platform() {
|
Platform::~Platform() {
|
||||||
LOG(0) << "Shutting down platform.";
|
LOG(0) << "Shutting down platform.";
|
||||||
|
DestroyWindow(wnd_);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Platform::Update() {}
|
void Platform::Update() {
|
||||||
|
DCHECK(!should_exit_);
|
||||||
|
|
||||||
|
MSG msg;
|
||||||
|
while (PeekMessage(&msg, nullptr, 0, 0, PM_REMOVE)) {
|
||||||
|
if (msg.message == WM_QUIT) {
|
||||||
|
should_exit_ = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
TranslateMessage(&msg);
|
||||||
|
DispatchMessage(&msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Platform::Exit() {
|
void Platform::Exit() {
|
||||||
should_exit_ = true;
|
should_exit_ = true;
|
||||||
|
@ -72,60 +86,45 @@ void Platform::ShareFile(const std::string& file_name) {}
|
||||||
void Platform::SetKeepScreenOn(bool keep_screen_on) {}
|
void Platform::SetKeepScreenOn(bool keep_screen_on) {}
|
||||||
|
|
||||||
HINSTANCE Platform::GetInstance() {
|
HINSTANCE Platform::GetInstance() {
|
||||||
return hInst;
|
return instance_;
|
||||||
}
|
}
|
||||||
|
|
||||||
HWND Platform::GetWindow() {
|
HWND Platform::GetWindow() {
|
||||||
return hWnd;
|
return wnd_;
|
||||||
}
|
}
|
||||||
|
|
||||||
LRESULT CALLBACK Platform::WndProc(HWND hWnd,
|
LRESULT CALLBACK Platform::WndProc(HWND wnd,
|
||||||
UINT message,
|
UINT message,
|
||||||
WPARAM wParam,
|
WPARAM wparam,
|
||||||
LPARAM lParam) {
|
LPARAM lparam) {
|
||||||
// switch (message)
|
auto* platform =
|
||||||
// {
|
reinterpret_cast<Platform*>(GetWindowLongPtr(wnd, GWL_USERDATA));
|
||||||
// case WM_COMMAND:
|
|
||||||
// {
|
switch (message) {
|
||||||
// int wmId = LOWORD(wParam);
|
case WM_CREATE:
|
||||||
// // Parse the menu selections:
|
SetWindowLongPtr(wnd, GWL_USERDATA,
|
||||||
// switch (wmId)
|
(LONG_PTR)(((LPCREATESTRUCT)lparam)->lpCreateParams));
|
||||||
// {
|
break;
|
||||||
// case IDM_ABOUT:
|
case WM_SIZE:
|
||||||
// DialogBox(hInst, MAKEINTRESOURCE(IDD_ABOUTBOX), hWnd, About);
|
platform->observer_->OnWindowResized(LOWORD(lparam), HIWORD(lparam));
|
||||||
// break;
|
break;
|
||||||
// case IDM_EXIT:
|
case WM_DESTROY:
|
||||||
// DestroyWindow(hWnd);
|
platform->observer_->OnWindowDestroyed();
|
||||||
// break;
|
PostQuitMessage(0);
|
||||||
// default:
|
break;
|
||||||
// return DefWindowProc(hWnd, message, wParam, lParam);
|
default:
|
||||||
// }
|
return DefWindowProc(wnd, message, wparam, lparam);
|
||||||
// }
|
}
|
||||||
// break;
|
return 0;
|
||||||
// case WM_PAINT:
|
|
||||||
// {
|
|
||||||
// PAINTSTRUCT ps;
|
|
||||||
// HDC hdc = BeginPaint(hWnd, &ps);
|
|
||||||
// // TODO: Add any drawing code that uses hdc here...
|
|
||||||
// EndPaint(hWnd, &ps);
|
|
||||||
// }
|
|
||||||
// break;
|
|
||||||
// case WM_DESTROY:
|
|
||||||
// PostQuitMessage(0);
|
|
||||||
// break;
|
|
||||||
// default:
|
|
||||||
return DefWindowProc(hWnd, message, wParam, lParam);
|
|
||||||
// }
|
|
||||||
// return 0;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace eng
|
} // namespace eng
|
||||||
|
|
||||||
int APIENTRY wWinMain(_In_ HINSTANCE hInstance,
|
int WINAPI WinMain(HINSTANCE instance,
|
||||||
_In_opt_ HINSTANCE hPrevInstance,
|
HINSTANCE prev_instance,
|
||||||
_In_ LPWSTR lpCmdLine,
|
PSTR cmd_line,
|
||||||
_In_ int nCmdShow) {
|
int cmd_show) {
|
||||||
eng::Platform platform(hInstance, nCmdShow);
|
eng::Platform platform(instance, cmd_show);
|
||||||
eng::KaliberMain(&platform);
|
eng::KaliberMain(&platform);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue