//--------------------------------------------------------------------------------------- // This code will execute after your module is loaded into memory (but after global // variables are initialized, of course.) void FSkookumScriptRuntime::StartupModule() { #if WITH_EDITORONLY_DATA // In editor builds, don't activate SkookumScript if there's no project (project wizard mode) if (!FApp::GetGameName() || !FApp::GetGameName()[0] || FPlatformString::Strcmp(FApp::GetGameName(), TEXT("None")) == 0) { m_is_skookum_disabled = true; return; } #else // In cooked builds, stay inert when there's no compiled binaries if (!m_runtime.is_binary_hierarchy_existing()) { m_is_skookum_disabled = true; return; } #endif A_DPRINT("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); //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // Start up SkookumScript // Originally, the compiled binaries were loaded with a delay when in UE4Editor to provide the user with a smoother startup sequence // However this caused issues with the proper initialization of Skookum Blueprint nodes // So to avoid glitches, SkookumScript is always initialized right away right here //#if WITH_EDITORONLY_DATA // if (!GIsEditor) //#endif { // Initialize right away ensure_runtime_initialized(); } //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ // 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 }
//--------------------------------------------------------------------------------------- // 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 }