Scene3DPick record struct Pro
The answer to one click in a 3D cell, raised by Scene3DView.Picked.
public readonly record struct Scene3DPick
- Namespace
- ArionUI.Charts3D
- Package
- ArionUI.Charts3D ·
dotnet add package ArionUI.Charts3D --prerelease
Constructors
Scene3DPick
public Scene3DPick(Scene3DPickKind Kind, int Index, int Column, long Row, Vector3 Position, ArionModifiers Modifiers, double PassMs, double LatencyMs);The answer to one click in a 3D cell, raised by Scene3DView.Picked.
Parameters
KindWhat was hit;
Scene3DPickKind.Nonefor a miss.IndexThe hit object's number: the point index for a cloud, the lattice index (
column + row * columns) for a surface,band + age * bandsfor a waterfall. -1 for a miss.ColumnLattice column (surface) or band (waterfall); -1 otherwise.
RowLattice row (surface) or absolute line number (waterfall); -1 otherwise. A
long, because a waterfall that runs for a year at sixty lines a second has appended more lines than anintcan count.PositionWhere the hit object sits in DATA units - the numbers on the axes, not the box's world coordinates.
ModifiersThe keys held at the click, so a consumer can make Ctrl+click ADD to a selection.
PassMsThe id pass alone: the draw and the read of the seven by seven window, GPU-bounded (everything submitted earlier had finished before the clock started, and the read returns only once the pass has).
LatencyMsFrom the request to the moment the answer was taken on the UI thread (
Scene3DView.Pickedis raised right then). It contains three waits: the cell's next frame, which REDRAWS the visible picture before the id pass runs (the release that made the click marks the cell dirty, and a dirty GPU cell is always drawn again - a point cloud serves that redraw from its cached picture, seePointCloudLayer.BaseDraws); the id pass itself (PassMs); and the wait for the next UI tick. 0 on an answer that was not delivered through a view.
Properties
Column
public int Column { get; init; }Lattice column (surface) or band (waterfall); -1 otherwise.
Index
public int Index { get; init; }The hit object's number: the point index for a cloud, the lattice index (column + row * columns) for a surface, band + age * bands for a waterfall. -1 for a miss.
IsHit
public bool IsHit { get; }True when something was hit.
Kind
public Scene3DPickKind Kind { get; init; }What was hit; Scene3DPickKind.None for a miss.
LatencyMs
public double LatencyMs { get; init; }From the request to the moment the answer was taken on the UI thread (Scene3DView.Picked is raised right then). It contains three waits: the cell's next frame, which REDRAWS the visible picture before the id pass runs (the release that made the click marks the cell dirty, and a dirty GPU cell is always drawn again - a point cloud serves that redraw from its cached picture, see PointCloudLayer.BaseDraws); the id pass itself (PassMs); and the wait for the next UI tick. 0 on an answer that was not delivered through a view.
Modifiers
public ArionModifiers Modifiers { get; init; }The keys held at the click, so a consumer can make Ctrl+click ADD to a selection.
PassMs
public double PassMs { get; init; }The id pass alone: the draw and the read of the seven by seven window, GPU-bounded (everything submitted earlier had finished before the clock started, and the read returns only once the pass has).
Position
public Vector3 Position { get; init; }Where the hit object sits in DATA units - the numbers on the axes, not the box's world coordinates.
Row
public long Row { get; init; }Lattice row (surface) or absolute line number (waterfall); -1 otherwise. A long, because a waterfall that runs for a year at sixty lines a second has appended more lines than an int can count.
Methods
Miss
public static Scene3DPick Miss(ArionModifiers modifiers);A click on nothing.
