Panda3D.Framework.Input 0.1.0-preview.13

This is a prerelease version of Panda3D.Framework.Input.
dotnet add package Panda3D.Framework.Input --version 0.1.0-preview.13
                    
NuGet\Install-Package Panda3D.Framework.Input -Version 0.1.0-preview.13
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Panda3D.Framework.Input" Version="0.1.0-preview.13" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Panda3D.Framework.Input" Version="0.1.0-preview.13" />
                    
Directory.Packages.props
<PackageReference Include="Panda3D.Framework.Input" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Panda3D.Framework.Input --version 0.1.0-preview.13
                    
#r "nuget: Panda3D.Framework.Input, 0.1.0-preview.13"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Panda3D.Framework.Input@0.1.0-preview.13
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Panda3D.Framework.Input&version=0.1.0-preview.13&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=Panda3D.Framework.Input&version=0.1.0-preview.13&prerelease
                    
Install as a Cake Tool

Panda3D.Framework.Input

Builds Panda's data graph and per-window input chain, registers the dataLoop task that traverses and evaluates it each frame, and exposes input through three layers: raw device polling at the bottom, a serializable action / binding / context layer in the middle, and both polling and typed-event (IObservable<T>) access on top. Bindings and polling are physical (raw scan position), so WASD is correct on any keyboard layout.

Provides

  • AddInput() — devices, the action runtime, and the dataLoop frame task (capture edges → traverse → evaluate actions).
  • IInput — per-view raw polling: IsDown/Pressed/Released(ButtonId), MousePosition, IsOverUi, CaptureNext(). Per-view — resolve it from the view scope via view.Input() (or view.Services), not the root provider.
  • Keys / Mouse / GamepadButtonId vocabularies (Keys.Space, Keys.Ascii('w'), Mouse.Left, Gamepad.A, …); ButtonId persists by stable Name.
  • Actions: ButtonAction (bool), AxisAction (float), VectorAction (LVector2f) — each with polling state and Pressed/Released/Changed observables; Bindings is statically constrained to compatible binding types.
  • Bindings: ButtonBinding, AxisBinding, CompositeAxisBinding, CompositeVectorBinding, StickBinding (deadzone/invert/scale live on the analog binding).
  • IInputContext — a named, prioritized, enable/disable-able action set; create with serviceProvider.CreateContext(name, priority) (e.g. view.Services.CreateContext(...)).
  • IDevices — gamepad/joystick enumeration plus Connected/Disconnected hotplug observables.
  • IButtonLabels — layout-aware display labels for HUD / rebind UI.

Usage

var ctx = view.Services.CreateContext("gameplay");

var move = ctx.Add(new VectorAction("move"));
move.Bindings.Add(new CompositeVectorBinding(Keys.Ascii('w'), Keys.Ascii('s'), Keys.Ascii('a'), Keys.Ascii('d')));
move.Bindings.Add(new StickBinding(InputDeviceAxis.LeftX, InputDeviceAxis.LeftY) { Deadzone = 0.15f });
LVector2f dir = move.Value;                       // poll, or move.Changed.Subscribe(v => …)

var jump = ctx.Add(new ButtonAction("jump"));
jump.Bindings.Add(new ButtonBinding(Keys.Space));
jump.Bindings.Add(new ButtonBinding(Gamepad.A));  // multiple bindings, OR'd
jump.Pressed.Subscribe(_ => DoJump());            // observable… or poll: if (jump.WasPressed) …

// raw-polling escape hatch (per view):
if (view.Input().Pressed(Keys.Escape)) Quit();

Part of Panda3D.Framework; the Panda3D.Framework umbrella package pulls in every library plus the bindings and native runtimes.

Product 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Panda3D.Framework.Input:

Package Downloads
Panda3D.Framework

The complete Panda3D.Framework: every feature library, the C# bindings, and the native runtimes. Reference this one package to build and run a game.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.1.0-preview.13 64 8/3/2026
0.1.0-preview.11 67 8/1/2026
0.1.0-preview.5 56 7/20/2026