void FSkookumScriptRuntime::ensure_runtime_initialized() { if (!m_runtime.is_initialized()) { m_runtime.startup(); compile_and_load_binaries(); } }
//--------------------------------------------------------------------------------------- // This code will execute after your module is loaded into memory (but after global // variables are initialized, of course.) void FSkookumScriptRuntime::StartupModule() { A_DPRINT(A_SOURCE_STR " Starting up SkookumScript plug-in modules\n"); // Note that FWorldDelegates::OnPostWorldCreation has world_p->WorldType set to None // Note that FWorldDelegates::OnPreWorldFinishDestroy has world_p->GetName() set to "None" m_on_world_init_pre_handle = FWorldDelegates::OnPreWorldInitialization.AddRaw(this, &FSkookumScriptRuntime::on_world_init_pre); m_on_world_init_post_handle = FWorldDelegates::OnPostWorldInitialization.AddRaw(this, &FSkookumScriptRuntime::on_world_init_post); m_on_world_cleanup_handle = FWorldDelegates::OnWorldCleanup.AddRaw(this, &FSkookumScriptRuntime::on_world_cleanup); // Hook up Unreal memory allocator AMemory::override_functions(&Agog::malloc_func, &Agog::free_func, &Agog::req_byte_size_func); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Start up SkookumScript #if !WITH_EDITOR // If no editor, initialize right away // otherwise wait until map is loaded m_runtime.startup(); #ifndef SKOOKUM_REMOTE_UNREAL bool success_b = m_runtime.load_compiled_scripts(); SK_ASSERTX(success_b, AErrMsg("Unable to load SkookumScript compiled binaries!", AErrLevel_notify)); #endif #endif //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Send off connect request to IDE // Come back later to check on it #ifdef SKOOKUM_REMOTE_UNREAL if (!IsRunningCommandlet()) { m_remote_client.set_mode(SkLocale_runtime); } #endif }
//--------------------------------------------------------------------------------------- // void FSkookumScriptRuntime::on_editor_map_opened() { // When editor is present, initialize Sk here if (!m_runtime.is_initialized()) { m_runtime.startup(); #ifdef SKOOKUM_REMOTE_UNREAL // At this point, have zero patience with the IDE and launch it if not connected if (!IsRunningCommandlet()) { // At this point, wait if necessary to make sure we are connected m_remote_client.ensure_connected(0.0); // Kick off re-compilation of the binaries m_remote_client.cmd_compiled_state(true); m_freshen_binaries_requested = false; // Request satisfied } #else // If no remote connection, load binaries at this point bool success_b = m_runtime.load_compiled_scripts(); SK_ASSERTX(success_b, AErrMsg("Unable to load SkookumScript compiled binaries!", AErrLevel_notify)); #endif } }