auto loader = RED4ext::ResourceLoader::Get();
auto token = loader->LoadAsync(R"(base\vehicles\sport\v_sport1_herrera_outlaw_basic_01.ent)");
token->OnLoaded([](RED4ext::Handle<RED4ext::CResource>& aResource) {
Log("Resource is loaded");
});
auto rtti = RED4ext::CRTTISystem::Get();
rtti->AddRegisterCallback([&rtti] {
Log("RTTI Type Registration");
});
Added support for background jobs
auto loader = RED4ext::ResourceLoader::Get();
auto token = loader->LoadAsync(R"(base\vehicles\sport\v_sport1_herrera_outlaw_basic_01.ent)");
{
RED4ext::JobQueue queue; // Jobs in one queue are sequential
queue.Dispatch([]{ Log("Job A-1"); });
queue.Dispatch([]{ Log("Job A-2"); });
queue.Dispatch([]{ Log("Job A-3"); });
Log("Checkpoint A");
}
{
RED4ext::JobQueue queue;
queue.Dispatch([]{ Log("Job B-1"); });
queue.Wait(token->job); // Suspends jobs in the queue
queue.Dispatch([]{ Log("Job B-2"); });
queue.Dispatch([]{ Log("Job B-3"); });
Log("Checkpoint B");
}
[0.420] Checkpoint A
[0.420] Job A-1
[0.420] Job B-1 <-- job can start immediately, even before checkpoint B
[0.420] Checkpoint B
[0.420] Job A-2
[0.420] Job A-3 <-- all previous jobs executed at the same timestamp
[0.462] Job B-2 <-- continues when the resource is ready
[0.462] Job B-3