void FSkookumScriptRuntime::ensure_runtime_initialized()
  {
  if (!m_runtime.is_initialized())
    {
    m_runtime.startup();
    compile_and_load_binaries();
    }
  }
//---------------------------------------------------------------------------------------
// 
bool FSkookumScriptRuntime::has_skookum_default_constructor(UClass * class_p) const
  {
  SK_ASSERTX(m_runtime.is_initialized(), "Runtime must be initialized for this code to work.");

  SkClass * sk_class_p = SkUEClassBindingHelper::get_sk_class_from_ue_class(class_p);
  if (sk_class_p)
    {
    return (sk_class_p->find_instance_method_inherited(ASymbolX_ctor) != nullptr);
    }

  return false;
  }
//---------------------------------------------------------------------------------------
// 
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
    }
  }