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
<PackageReference Include="DemoViewer.NET.Playback2D.Scene" Version="2.1.1" />
<PackageVersion Include="DemoViewer.NET.Playback2D.Scene" Version="2.1.1" />
<PackageReference Include="DemoViewer.NET.Playback2D.Scene" />
paket add DemoViewer.NET.Playback2D.Scene --version 2.1.1
#r "nuget: DemoViewer.NET.Playback2D.Scene, 2.1.1"
#:package DemoViewer.NET.Playback2D.Scene@2.1.1
#addin nuget:?package=DemoViewer.NET.Playback2D.Scene&version=2.1.1
#tool nuget:?package=DemoViewer.NET.Playback2D.Scene&version=2.1.1
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 | Versions 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. |
-
net10.0
- SkiaSharp (>= 3.119.4)
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.