diff options
Diffstat (limited to 'platform/javascript/os_javascript.cpp')
| -rw-r--r-- | platform/javascript/os_javascript.cpp | 96 |
1 files changed, 32 insertions, 64 deletions
diff --git a/platform/javascript/os_javascript.cpp b/platform/javascript/os_javascript.cpp index 18bf8f6a8..b8c3dea3b 100644 --- a/platform/javascript/os_javascript.cpp +++ b/platform/javascript/os_javascript.cpp @@ -27,27 +27,27 @@ /* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */ /*************************************************************************/ #include "os_javascript.h" -#include "drivers/gles2/rasterizer_gles2.h" + +#include "drivers/gles3/rasterizer_gles3.h" #include "core/io/file_access_buffered_fa.h" #include "drivers/unix/file_access_unix.h" #include "drivers/unix/dir_access_unix.h" - #include "servers/visual/visual_server_raster.h" - #include "main/main.h" - #include "core/globals.h" -#include "stdlib.h" -#include "emscripten.h" #include "dom_keys.h" +#include <stdlib.h> +#include <emscripten.h> + int OS_JavaScript::get_video_driver_count() const { return 1; } + const char * OS_JavaScript::get_video_driver_name(int p_driver) const { - return "GLES2"; + return "GLES3"; } OS::VideoMode OS_JavaScript::get_default_video_mode() const { @@ -215,6 +215,7 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int // find locale, emscripten only sets "C" char locale_ptr[16]; + /* clang-format off */ EM_ASM_({ var locale = ""; if (Module.locale) { @@ -230,56 +231,26 @@ void OS_JavaScript::initialize(const VideoMode& p_desired,int p_video_driver,int locale = locale.split('.')[0]; stringToUTF8(locale, $0, 16); }, locale_ptr); + /* clang-format on */ setenv("LANG", locale_ptr, true); print_line("Init Audio"); - AudioDriverManagerSW::add_driver(&audio_driver_javascript); + AudioDriverManager::add_driver(&audio_driver_javascript); + audio_driver_javascript.set_singleton(); + if (audio_driver_javascript.init() != OK) { - if (true) { - RasterizerGLES2 *rasterizer_gles22=memnew( RasterizerGLES2(false,false,false,false) );; - rasterizer_gles22->set_use_framebuffers(false); //not supported by emscripten - if (gl_extensions) - rasterizer_gles22->set_extensions(gl_extensions); - rasterizer = rasterizer_gles22; - } else { - //rasterizer = memnew( RasterizerGLES1(true, false) ); + ERR_PRINT("Initializing audio failed."); } + RasterizerGLES3::register_config(); + RasterizerGLES3::make_current(); + print_line("Init VS"); - visual_server = memnew( VisualServerRaster(rasterizer) ); - visual_server->init(); + visual_server = memnew( VisualServerRaster() ); visual_server->cursor_set_visible(false, 0); - /*AudioDriverManagerSW::get_driver(p_audio_driver)->set_singleton(); - - if (AudioDriverManagerSW::get_driver(p_audio_driver)->init()!=OK) { - - ERR_PRINT("Initializing audio failed."); - }*/ - - print_line("Init SM"); - - //sample_manager = memnew( SampleManagerMallocSW ); - audio_server = memnew( AudioServerJavascript ); - - print_line("Init Mixer"); - - //audio_server->set_mixer_params(AudioMixerSW::INTERPOLATION_LINEAR,false); - audio_server->init(); - - print_line("Init SoundServer"); - - spatial_sound_server = memnew( SpatialSoundServerSW ); - spatial_sound_server->init(); - - print_line("Init SpatialSoundServer"); - - spatial_sound_2d_server = memnew( SpatialSound2DServerSW ); - spatial_sound_2d_server->init(); - - // print_line("Init Physicsserver"); physics_server = memnew( PhysicsServerSW ); @@ -332,9 +303,11 @@ void OS_JavaScript::finalize() { void OS_JavaScript::alert(const String& p_alert,const String& p_title) { + /* clang-format off */ EM_ASM_({ window.alert(UTF8ToString($0)); }, p_alert.utf8().get_data()); + /* clang-format on */ } @@ -366,9 +339,11 @@ int OS_JavaScript::get_mouse_button_state() const { void OS_JavaScript::set_window_title(const String& p_title) { + /* clang-format off */ EM_ASM_({ document.title = UTF8ToString($0); }, p_title.utf8().get_data()); + /* clang-format on */ } //interesting byt not yet @@ -424,8 +399,10 @@ void OS_JavaScript::set_window_maximized(bool p_enabled) { set_window_fullscreen(false); } else { + /* clang-format off */ video_mode.width = EM_ASM_INT_V(return window.innerWidth); video_mode.height = EM_ASM_INT_V(return window.innerHeight); + /* clang-format on */ emscripten_set_canvas_size(video_mode.width, video_mode.height); } } @@ -444,7 +421,9 @@ void OS_JavaScript::set_window_fullscreen(bool p_enable) { // _browser_resize_callback or _fullscreen_change_callback EMSCRIPTEN_RESULT result; if (p_enable) { + /* clang-format off */ EM_ASM(Module.requestFullscreen(false, false);); + /* clang-format on */ } else { result = emscripten_exit_fullscreen(); @@ -502,19 +481,15 @@ bool OS_JavaScript::main_loop_iterate() { time_to_save_sync-=elapsed; - print_line("elapsed "+itos(elapsed)+" tts "+itos(time_to_save_sync)); - if (time_to_save_sync<0) { //time to sync, for real - // run 'success' - print_line("DOING SYNCH!"); + /* clang-format off */ EM_ASM( - FS.syncfs(function (err) { - assert(!err); - console.log("Synched!"); - //ccall('success', 'v'); - }); + FS.syncfs(function(err) { + if (err) { Module.printErr('Failed to save IDB file system: ' + err.message); } + }); ); + /* clang-format on */ } @@ -782,18 +757,12 @@ void OS_JavaScript::main_loop_request_quit() { main_loop->notification(MainLoop::NOTIFICATION_WM_QUIT_REQUEST); } -void OS_JavaScript::reload_gfx() { - - if (gfx_init_func) - gfx_init_func(gfx_init_ud,use_gl2,video_mode.width,video_mode.height,video_mode.fullscreen); - if (rasterizer) - rasterizer->reload_vram(); -} - Error OS_JavaScript::shell_open(String p_uri) { + /* clang-format off */ EM_ASM_({ window.open(UTF8ToString($0), '_blank'); }, p_uri.utf8().get_data()); + /* clang-format on */ return OK; } @@ -890,7 +859,6 @@ OS_JavaScript::OS_JavaScript(GFXInitFunc p_gfx_init_func,void*p_gfx_init_ud, Get main_loop=NULL; last_id=1; gl_extensions=NULL; - rasterizer=NULL; window_maximized=false; get_data_dir_func=p_get_data_dir_func; |
