@solidrt/2d 0.0.58 → 0.0.60

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/src/views.ts CHANGED
@@ -18,12 +18,12 @@
18
18
  // a sprite under a minimap gets its ordinary handlers, and the view's
19
19
  // listeners are the last stop.
20
20
  import { addDraw, createDrawTarget, destroyTexture, removeDraw, setDrawBuffers, setDrawRange, setTargetParams, setTargetSize } from "@solidrt/core/gpu"
21
- import type { BufferId, BufferUpdate, DrawId, InstanceOrder, RenderPipelineId, TextureId } from "@solidrt/core/gpu"
21
+ import type { BufferId, DrawId, InstanceOrder, RenderPipelineId, TextureId } from "@solidrt/core/gpu"
22
22
  import { applyCamera, cameraParams, checkCamera, defaultCamera, projectCamera, unprojectCamera } from "./camera.ts"
23
23
  import type { CameraState, CameraUpdate } from "./camera.ts"
24
24
  import { spriteDispatch } from "./dispatch.ts"
25
25
  import type { PointerFeed } from "@solidrt/core"
26
- import type { LayerPointerListener, Sprite, SpriteHandlers } from "./layer.ts"
26
+ import type { LayerPointerListener, Sprite, LayerHandlers } from "./layer.ts"
27
27
  import { checkOversample, thrashSentinel } from "./oversample.ts"
28
28
 
29
29
  export type ViewOptions = {
@@ -51,7 +51,7 @@ export type ViewHandle = {
51
51
  texture: TextureId
52
52
  /** Element handlers wiring the view's pointer events (sprites, groups
53
53
  * and the root listeners); see handlersFor. */
54
- handlers: SpriteHandlers
54
+ handlers: LayerHandlers
55
55
  /** View pixels, as created or last set by setSize. */
56
56
  readonly width: number
57
57
  readonly height: number
@@ -95,7 +95,7 @@ export type ViewHandle = {
95
95
  * `handlers`). `layout` is read per event, so a resize-reactive layout
96
96
  * just works - @solidrt/3d's handlersFor, one dimension down.
97
97
  */
98
- handlersFor(layout: () => { width: number; height: number }): SpriteHandlers
98
+ handlersFor(layout: () => { width: number; height: number }): LayerHandlers
99
99
  dispose(): void
100
100
  }
101
101
 
@@ -107,9 +107,10 @@ export type ViewDeps = {
107
107
  pipeline: RenderPipelineId
108
108
  quad: BufferId
109
109
  atlas: TextureId
110
- /** The layer's current instance binding, in the entry's own spelling
111
- * (`instanceBuffers` on the node layer, `instanceBuffer` on records). */
112
- buffers: () => BufferUpdate
110
+ /** The layer's current instance buffers, in the pipeline's layout order
111
+ * after the quad (the pose and style pair on the node layer, the one
112
+ * record buffer on records). */
113
+ buffers: () => BufferId[]
113
114
  /** The instance count as last published. */
114
115
  count: () => number
115
116
  tint: () => [number, number, number, number]
@@ -123,7 +124,7 @@ export type Views = {
123
124
  create(opts: ViewOptions): ViewHandle
124
125
  /** The layer swapped its instance buffers (growth): every entry
125
126
  * follows. */
126
- setBuffers(update: BufferUpdate): void
127
+ setBuffers(instanceBuffers: BufferId[]): void
127
128
  setCount(count: number): void
128
129
  setTint(tint: [number, number, number, number]): void
129
130
  dispose(): void
@@ -138,9 +139,8 @@ export function createViews(deps: ViewDeps): Views {
138
139
  let ordered: ViewRecord | null = null
139
140
  let entryFor = (texture: TextureId, order: InstanceOrder | undefined): DrawId =>
140
141
  addDraw(texture, deps.pipeline, null, {
141
- buffer: deps.quad,
142
+ buffers: [deps.quad, ...deps.buffers()],
142
143
  vertexCount: 4,
143
- ...deps.buffers(),
144
144
  instanceOrder: order,
145
145
  instanceCount: deps.count(),
146
146
  })
@@ -199,7 +199,7 @@ export function createViews(deps: ViewDeps): Views {
199
199
  if (order !== undefined) ordered = record
200
200
  let view: ViewHandle = {
201
201
  texture,
202
- handlers: undefined as unknown as SpriteHandlers,
202
+ handlers: undefined as unknown as LayerHandlers,
203
203
  get width() {
204
204
  return width
205
205
  },
@@ -261,8 +261,8 @@ export function createViews(deps: ViewDeps): Views {
261
261
  views.add(record)
262
262
  return view
263
263
  },
264
- setBuffers(update) {
265
- for (let v of views) setDrawBuffers(v.texture, v.entry, update)
264
+ setBuffers(instanceBuffers) {
265
+ for (let v of views) setDrawBuffers(v.texture, v.entry, { buffers: [deps.quad, ...instanceBuffers] })
266
266
  },
267
267
  setCount(count) {
268
268
  for (let v of views) setDrawRange(v.texture, v.entry, { instanceCount: count })