DemoViewer.NET.Playback2D.Scene 2.1.1

dotnet add package DemoViewer.NET.Playback2D.Scene --version 2.1.1
                    
NuGet\Install-Package DemoViewer.NET.Playback2D.Scene -Version 2.1.1
                    
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="DemoViewer.NET.Playback2D.Scene" Version="2.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="DemoViewer.NET.Playback2D.Scene" Version="2.1.1" />
                    
Directory.Packages.props
<PackageReference Include="DemoViewer.NET.Playback2D.Scene" />
                    
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 DemoViewer.NET.Playback2D.Scene --version 2.1.1
                    
#r "nuget: DemoViewer.NET.Playback2D.Scene, 2.1.1"
                    
#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 DemoViewer.NET.Playback2D.Scene@2.1.1
                    
#: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=DemoViewer.NET.Playback2D.Scene&version=2.1.1
                    
Install as a Cake Addin
#tool nuget:?package=DemoViewer.NET.Playback2D.Scene&version=2.1.1
                    
Install as a Cake Tool

DemoViewer.NET.Playback2D.Scene

The scene contract of DemoViewer.NET's 2D map: what one frame holds, how a layer draws, how the map's floors and panes are laid out, how a world point maps to the screen and to a named place. SkiaSharp and the BCL only, no UI framework. It is versioned with DemoViewer.NET.Extensions.Sdk.

<ItemGroup>
  <PackageReference Include="DemoViewer.NET.Extensions.Sdk" Version="1.2.*" />
  <PackageReference Include="DemoViewer.NET.Playback2D.Scene" Version="1.2.*" />
</ItemGroup>

The app ships this assembly and SkiaSharp, so copies in your extension's folder are never loaded. Build against the SkiaSharp version this package depends on.

Every type sits under DemoViewer.NET.Playback2D, matching the package's root namespace: the scene contract, place lookup, the sidecar identity records and the content key alike.

What is in it

Namespace Types
Playback2D Scene2DFrame and what it carries (PlayerMarker, GrenadeTrail, AreaEffect, BombMarker, KillFeedRow, SceneGameInfo, SceneMapInfo), SceneTime, ISceneFrames (frames an export caller supplies), ViewportTransform, SliceCamera, ScenePalette, WorldBounds, TextBlobCache
Playback2D.Compositing ISceneLayer, LayerSlot, LayerCacheHint, SceneRenderContext. The stack a layer is drawn by, the submission it is drawn from and the gate that serialises them are the host's, and internal
Playback2D.Layers SceneLayerIds, the ids of the app's own layers
Playback2D.Levels MapSpace, MapLevel, MapLevelId, PaneSet, LevelPane, ILevelLayoutPolicy, StackedLayout, IMapAsset (a loaded map's floors, radar images and places). Which level a single pane shows, and the dwell that decides it, are the host's
Playback2D.Zones PlaceResolver, ZoneSet, PlaceHit and the zone geometry
Playback2D.Cameras ICameraRig, the contract a pane's camera is driven through, and ManualRig, which holds whatever the camera already shows. The fit and follow rigs are the host's, and internal
Playback2D.Tools IMapTool, MapToolEvent, IMapToolContext, MapToolButton, MapToolModifiers
Playback2D.Layers (drawing) OverlayHeatmapLayer, QueryTokenLayer
Playback2D.Overlay, .Query the documents those two layers draw
Playback2D.Annotations AnnotationDocument, AnnotationElement, AnnotationSession, DocDelta and the styles and timing they carry
Playback2D.Timeline ITimelineTrack, ITimelineData, TimelineMarker, TimelineBand, AnnotationTrack
Playback2D.Input IPointerTool, ToolPointerEvent, IToolServices, ITokenEditor: the playback tab's own tool contract, which a tool that edits tokens needs. Writing ink is first-party: the session and the authoring clock are not on IToolServices
Playback2D.Hud IHudDataSource, HudSnapshot, IIconSource
Playback2D.Vision IVisionSolver, VisionSolution
Playback2D.Annotations DemoIdentity, ClockIdentity: which demo and which parse a sidecar was written against
Playback2D DemoContentHash, the demo content key every store joins on
Playback2D (more) MarkerSmoother, SceneGuides, TrailGeometry, SceneDefaults; Levels.MapSpaceFactory; Zones.NavPathfinder

The app's own layers (radar, markers, roster and the rest), the drawing tools, video export, keyframes and the render backends are not published. IMapTool is the contract to write a new tool against; IPointerTool is published for tools that hold the playback tab's token editor. Ink authoring is not: the annotation session and the authoring clock are not reachable from IToolServices.

Frames and layers

A Scene2DFrame is valid only for the call it is handed to: the app refills frames in place, so never keep one. Its properties are init-only, which lets a test or a fixture build one with an object initializer.

An ISceneLayer does its work in two steps. Advance runs on the UI thread before each frame is submitted and is the only place a layer may change its own state. Render draws one pane onto the SKCanvas it is given, already clipped and translated, using only the SceneRenderContext: Transform maps world to pane pixels, BelongsHere(z) says whether a world height belongs on the pane's floor, and Palette has the theme's colours. Render runs once per pane and may run on the render thread, so it must not change anything. Layer ids beginning playback2d. or hud. are the app's.

Tools

An IMapTool handles a pointer gesture on a map. OnPressed decides: return true to own the gesture, and the tool then sees each OnMoved and the OnReleased, or OnCancelled when the gesture is abandoned (Escape, a lost capture). A MapToolEvent carries the pane under the pointer, the point in the view, in the pane and in the world, the button and the keys held. The IMapToolContext finds the pane at a point, projects a world point through a pane's camera, gives the world units one pixel covers (for hit radii that stay the same size on screen) and asks for a repaint.

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 DemoViewer.NET.Playback2D.Scene:

Package Downloads
DemoViewer.NET.Extensions.Sdk

Build extensions for DemoViewer.NET: tabs, demo passes and jobs, 2D Playback contributions, library filters and settings pages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2.1.1 64 10/27/2026
2.0.2 64 10/27/2026