mattak's blog

人生を1ミリ進める

MapboxでUnity3D対応をしたいので調査...

ただの個人的なメモ書き

手がかりをさぐる

同じことを考えている人はいるはずなのでとりあえず検索してみる。

github.com

Qtで同じことをやっている人はいるようだ。 これを真似すれば良さそう。

どのファイルをいじればいいのか?

commitログを眺める。

$ git log --oneline
efca99c [Qt] expose NorthOrientation
...
69465c9 [Qt] Add a Qt wrapper aroung mbgl::Map
d10cfd0 [ci skip] [android] Main loop integration
69465c9 [Qt] Add a Qt wrapper aroung mbgl::Map
d10cfd0 [ci skip] [android] Main loop integration
fd64b14 [glfw] Main loop integration
c31c91e [core] Add foreign main loop integration support to mbgl::RunLoop
bd5fabd [tests] Adapt tests for rendering on the main thread
1676934 [core] Render from the main thread
0f37b67 [core] Do not use std:: namespace for log2()

[Qt] というタグがついてるコミットが対象っぽい.

masterとの差分ファイル一覧を出す

$ git diff --name-only HEAD...qt-app
Makefile
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/MapView.java
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views/NativeMapView.java
configure
gyp/common.gypi
gyp/http-qt.gypi
gyp/linux.gyp
gyp/mbgl.gyp
gyp/osx.gyp
gyp/platform-qt.gypi
gyp/qt.gypi
include/mbgl/map/map.hpp
include/mbgl/platform/default/glfw_view.hpp
include/mbgl/platform/qt/QMapboxGL
include/mbgl/platform/qt/qmapboxgl.hpp
include/mbgl/util/run_loop.hpp
platform/android/jni.cpp
platform/android/native_map_view.cpp
platform/default/async_task.cpp
platform/default/glfw_view.cpp
platform/default/run_loop.cpp
platform/default/timer.cpp
platform/qt/application_root.cpp
platform/qt/asset_root.cpp
platform/qt/async_task.cpp
platform/qt/async_task_impl.hpp
platform/qt/http_context_qt.cpp
platform/qt/http_context_qt.hpp
platform/qt/http_request_qt.cpp
platform/qt/http_request_qt.hpp
platform/qt/image.cpp
platform/qt/qmapboxgl.cpp
platform/qt/qmapboxgl.qrc
platform/qt/qmapboxgl_p.hpp
platform/qt/run_loop.cpp
platform/qt/run_loop_impl.hpp
platform/qt/timer.cpp
platform/qt/timer_impl.hpp
qt/main.cpp
qt/mapwindow.cpp
qt/mapwindow.hpp
qt/qmapboxgl.gypi
scripts/linux/configure.sh
scripts/osx/configure.sh
scripts/osx/install.sh
scripts/osx/setup.sh
src/mbgl/map/map.cpp
src/mbgl/map/map_context.cpp
src/mbgl/map/map_context.hpp
src/mbgl/map/map_data.cpp
src/mbgl/map/map_data.hpp
src/mbgl/util/thread_context.hpp
test/api/annotations.cpp
test/api/api_misuse.cpp
test/api/custom_layer.cpp
test/api/repeated_render.cpp
test/api/set_style.cpp
test/fixtures/util.cpp
test/miscellaneous/map.cpp
test/storage/http_error.cpp
test/storage/http_retry_network_status.cpp
test/test.gypi

変更されたディレクトリ一覧を出す

$ git diff --name-only HEAD...qt-app | xargs -n1 dirname | sort | uniq
.
android/MapboxGLAndroidSDK/src/main/java/com/mapbox/mapboxsdk/views
gyp
include/mbgl/map
include/mbgl/platform/default
include/mbgl/platform/qt
include/mbgl/util
platform/android
platform/default
platform/qt
qt
scripts/linux
scripts/osx
src/mbgl/map
src/mbgl/util
test
test/api
test/fixtures
test/miscellaneous
test/storage

一つ一つファイルの変更をみていく

Makefile - qtのビルドオプションが追加されただけ

MapView.java - めっちゃ長い. タップイベントやら諸々が書かれてる

NativeMapView.java - 微修正. リネーム等なされているようだ

configure - printの設定が追加されただけ

gyp/linux.gyp gyp/common.gypi - フラグ変更のみ

gyp/qt.gypi gyp/platform-qt.gypi gyp/http-qt.gypi - 新規追加

gyp/mbgl.gyp - qt用に設定追加

...

こっちのソース見るほうが早いかも...

GitHub - tmpsantos/qmapboxgl: Mapbox GL for Qt

疑問点

  • UnityのTextureにmapboxのレンダリング結果を貼り付けることができるか?
  • MapBoxのタッチイベントをUnityに移譲することができるか?
  • Unityでnative c++のソース (mapbox gl のcore部分) をビルド連携可能か?