Panda3D.Framework.Scheduling
0.1.0-preview.13
dotnet add package Panda3D.Framework.Scheduling --version 0.1.0-preview.13
NuGet\Install-Package Panda3D.Framework.Scheduling -Version 0.1.0-preview.13
<PackageReference Include="Panda3D.Framework.Scheduling" Version="0.1.0-preview.13" />
<PackageVersion Include="Panda3D.Framework.Scheduling" Version="0.1.0-preview.13" />
<PackageReference Include="Panda3D.Framework.Scheduling" />
paket add Panda3D.Framework.Scheduling --version 0.1.0-preview.13
#r "nuget: Panda3D.Framework.Scheduling, 0.1.0-preview.13"
#:package Panda3D.Framework.Scheduling@0.1.0-preview.13
#addin nuget:?package=Panda3D.Framework.Scheduling&version=0.1.0-preview.13&prerelease
#tool nuget:?package=Panda3D.Framework.Scheduling&version=0.1.0-preview.13&prerelease
Panda3D.Framework.Scheduling
The gameplay-facing scheduling and timing seams, distinct from the host pump. IFrameScheduler replaces taskMgr with explicit sort ordering and disposable handles; IGameClock wraps the engine's global clock; and this package owns clock configuration (pacing and which source ticks the clock) that the host loop relies on. Replaces direct's taskMgr / doMethodLater and globalClock.
Provides
AddScheduler()— registersIFrameScheduler(and anIGameClockfor it to read).AddClock(o => …)— configures clock pacing and ticking viaClockOptions, and registersIGameClock.IFrameScheduler—AddFrameTask,AddTimed(doMethodLater),AddFixedStep(hz, step)(deterministic fixed-timestep accumulator),DelayFrames(n); each registration returns a disposableIScheduledTask.IGameClock— read-onlyDt/FrameTime/RealTime/FrameCount(the contract lives in Abstractions; the working implementation is here).ClockOptions—LimitFrameRate/MaxFps/MaxDt/TickClock.AddFrameTask(name, sort, …)(onIServiceCollection) — setup-time native sorted-task registration bracketed to the host lifetime.PandaFrameTask— the low-level primitive: a managed callback registered as a native sorted task on a chain at an explicit sort (advanced).
builder.Services.AddClock(o => { o.LimitFrameRate = true; o.MaxFps = 60; });
builder.Services.AddScheduler();
// later, from a coroutine or resolved service:
var scheduler = app.Services.GetRequiredService<IFrameScheduler>();
using var tick = scheduler.AddFrameTask(ctx =>
{
Advance(ctx.Dt);
return TaskResult.Continue;
}, sort: FrameSlots.Gameplay); // dispose the handle to remove the task
The global clock advances once per epoch from exactly one source: RenderFrame in rendered builds (Rendering registers an IClockTickSource), or the "default" task chain headlessly (ClockOptions.TickClock, on by default). AddClock won't enable chain ticking when a tick source is already present, avoiding a double-advance. Scheduler tasks and the host's setup-time tasks are the same native task-manager tasks, so they share one FrameSlots ordering space.
Part of Panda3D.Framework; the Panda3D.Framework umbrella package pulls in every library plus the bindings and native runtimes.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.Hosting.Abstractions (>= 8.0.1)
- Microsoft.Extensions.Options (>= 8.0.2)
- Panda3D.Async (>= 1.11.0-preview.6)
- Panda3D.Framework.Abstractions (>= 0.1.0-preview.13)
- Panda3D.Interop (>= 1.11.0-preview.4122)
NuGet packages (9)
Showing the top 5 NuGet packages that depend on Panda3D.Framework.Scheduling:
| Package | Downloads |
|---|---|
|
Panda3D.Framework.Events
The C#/Panda event seam: the per-frame queue-drain pump replacing direct's messenger, plus INamedEventBus and IObservable notifications. |
|
|
Panda3D.Framework.Rendering
The Panda3D rendering chain as DI services: engine/pipe/GSG, per-output views (window or offscreen), camera rigs, the 2D overlay, and the igLoop render task. |
|
|
Panda3D.Framework.Intervals
Cutscene/tween timelines on Panda's native CInterval system: Sequence/Parallel/Lerp, node lerps, managed intervals, awaitable playback. |
|
|
Panda3D.Framework.Audio
Audio lifecycle, 3-D attachment tracking, and awaitable sound completion over Panda's native AudioManager and AudioSound bindings. |
|
|
Panda3D.Framework.Particles
Panda's built-in particle system as a framework subsystem: a managed ParticleEffect and a timeline ParticleInterval over the native ParticleSystemManager. |
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.1.0-preview.13 | 109 | 8/3/2026 |
| 0.1.0-preview.11 | 114 | 8/1/2026 |
| 0.1.0-preview.5 | 99 | 7/20/2026 |