@solidrt/2d 0.0.58 → 0.0.59
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/AGENTS.md +55 -23
- package/examples/anim.tsx +3 -3
- package/examples/parity.tsx +4 -4
- package/examples/springs.tsx +29 -7
- package/package.json +3 -3
- package/src/animation.ts +5 -9
- package/src/camera2d.ts +20 -3
- package/src/components/group.tsx +6 -6
- package/src/components/sprite-layer.tsx +8 -0
- package/src/components/sprite.tsx +6 -6
- package/src/components/view2d.tsx +8 -0
- package/src/dispatch.ts +2 -2
- package/src/index.ts +6 -3
- package/src/layer.ts +231 -52
- package/src/records.ts +6 -6
- package/src/shaders.ts +22 -18
- package/src/tiles.ts +4 -4
- package/src/views.ts +13 -13
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,
|
|
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,
|
|
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:
|
|
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 }):
|
|
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
|
|
111
|
-
* (
|
|
112
|
-
|
|
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(
|
|
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
|
-
|
|
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
|
|
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(
|
|
265
|
-
for (let v of views) setDrawBuffers(v.texture, v.entry,
|
|
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 })
|