Skip to content

Commit 167f7a0

Browse files
committed
combine @Property and @signal decorators (works great)
1 parent e069376 commit 167f7a0

File tree

4 files changed

+32
-32
lines changed

4 files changed

+32
-32
lines changed

packages/twopoint5d-elements/src/components/PostProcessingElement.ts

+2-4
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,9 @@ export class PostProcessingElement extends TwoPoint5DElement {
2828

2929
@consume({context: stageRendererContext, subscribe: true})
3030
@property({attribute: false})
31-
accessor stageRendererCtx: IStageRenderer | undefined;
31+
@signal({readAsValue: true})
32+
accessor parentRenderer: IStageRenderer | undefined;
3233

33-
@signal({readAsValue: true}) accessor parentRenderer: IStageRenderer | undefined;
3434
@signalReader() accessor parentRenderer$: SignalReader<IStageRenderer | undefined>;
3535

3636
@provide({context: stageRendererContext})
@@ -56,8 +56,6 @@ export class PostProcessingElement extends TwoPoint5DElement {
5656
}
5757

5858
override render() {
59-
this.parentRenderer = this.stageRendererCtx;
60-
6159
return html`<slot></slot>`;
6260
}
6361
}

packages/twopoint5d-elements/src/components/Stage2DElement.ts

+15-10
Original file line numberDiff line numberDiff line change
@@ -47,16 +47,19 @@ export class Stage2DElement extends TwoPoint5DElement {
4747
}
4848
`;
4949

50-
@property({type: String, reflect: true})
51-
accessor name: string | undefined;
52-
5350
@consume({context: stageRendererContext, subscribe: true})
5451
@property({attribute: false})
55-
accessor stageRendererCtx: IStageRenderer | undefined;
52+
@signal({readAsValue: true})
53+
accessor stageRenderer: IStageRenderer | undefined;
5654

57-
@signal({readAsValue: true}) accessor stageRenderer: IStageRenderer | undefined;
5855
@signalReader() accessor stageRenderer$: SignalReader<IStageRenderer | undefined>;
5956

57+
@property({type: String, reflect: true})
58+
@signal({readAsValue: true})
59+
accessor name: string | undefined;
60+
61+
@signalReader() accessor name$: SignalReader<string | undefined>;
62+
6063
@property({type: String, reflect: true})
6164
accessor fit: 'contain' | 'cover' | 'fill' | undefined;
6265

@@ -128,6 +131,10 @@ export class Stage2DElement extends TwoPoint5DElement {
128131

129132
this.retain([FirstFrame, StageResize]);
130133

134+
this.name$((name) => {
135+
this.stage2d.name = name;
136+
});
137+
131138
this.stageRenderer$((stageRenderer) => {
132139
this.logger?.log('requested stage-renderer context', stageRenderer);
133140

@@ -193,11 +200,9 @@ export class Stage2DElement extends TwoPoint5DElement {
193200
}
194201

195202
override render() {
196-
this.stageRenderer = this.stageRendererCtx;
197-
198-
if (this.name) {
199-
this.stage2d.name = this.name;
200-
}
203+
// if (this.name) {
204+
// this.stage2d.name = this.name;
205+
// }
201206

202207
return html`<slot></slot>`;
203208
}

packages/twopoint5d-elements/src/components/TextureStoreElement.ts

+8-11
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,18 @@ export class TextureStoreElement extends TwoPoint5DElement {
2727
`;
2828

2929
@property({type: String, reflect: true})
30+
@signal({readAsValue: true})
3031
accessor src: string | undefined;
3132

33+
@signalReader() accessor src$: SignalReader<string | undefined>;
34+
3235
@consume({context: displayContext, subscribe: true})
3336
@property({attribute: false})
34-
accessor displayCtx: Display | undefined;
37+
@signal({readAsValue: true})
38+
accessor display: Display | undefined;
3539

36-
@signal({readAsValue: true}) accessor display: Display | undefined;
3740
@signalReader() accessor display$: SignalReader<Display | undefined>;
3841

39-
@signal({readAsValue: true}) accessor href: string | undefined;
40-
@signalReader() accessor href$: SignalReader<string | undefined>;
41-
4242
readonly store = new TextureStore();
4343

4444
constructor() {
@@ -52,19 +52,16 @@ export class TextureStoreElement extends TwoPoint5DElement {
5252
this.logger?.log('received display', {display, el: this});
5353
});
5454

55-
this.href$((href) => {
56-
if (href?.trim()) {
57-
const url = new URL(href, window.location.href).href;
55+
this.src$((src) => {
56+
if (src?.trim()) {
57+
const url = new URL(src, window.location.href).href;
5858
this.logger?.log('load texture-store from', {url, el: this});
5959
this.store.load(url);
6060
}
6161
});
6262
}
6363

6464
override render() {
65-
this.display = this.displayCtx;
66-
this.href = this.src;
67-
6865
return html`<slot></slot>`;
6966
}
7067
}

packages/twopoint5d/src/stage/PostProcessingRenderer.ts

+7-7
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ import {StageRenderer} from './StageRenderer.js';
1717
export class PostProcessingRenderer extends StageRenderer implements IStageAdded, IStageRemoved {
1818
composer?: EffectComposer;
1919

20-
renderPasses: WeakMap<IStage, RenderPass> = new WeakMap();
20+
stagePasses: WeakMap<IStage, RenderPass> = new WeakMap();
2121
passes: Pass[] = [];
2222

2323
constructor() {
@@ -31,7 +31,7 @@ export class PostProcessingRenderer extends StageRenderer implements IStageAdded
3131
this.stages.forEach((stage) => {
3232
this.resizeStage(stage, this.width, this.height);
3333
stage.stage.renderFrame(renderer, now, deltaTime, frameNo, (scene, camera, autoClear) => {
34-
const renderPass = this.renderPasses.get(stage.stage);
34+
const renderPass = this.stagePasses.get(stage.stage);
3535
if (renderPass) {
3636
renderPass.clear = autoClear;
3737
renderPass.scene = scene;
@@ -72,19 +72,19 @@ export class PostProcessingRenderer extends StageRenderer implements IStageAdded
7272
}
7373

7474
stageAdded({stage}: StageAddedProps) {
75-
if (hasGetRenderPass(stage) && !this.renderPasses.has(stage)) {
75+
if (hasGetRenderPass(stage) && !this.stagePasses.has(stage)) {
7676
const renderPass = stage.getRenderPass();
77-
this.renderPasses.set(stage, renderPass);
77+
this.stagePasses.set(stage, renderPass);
7878
this.addPass(renderPass);
7979

8080
console.log('stageAdded', {stage, renderPass, postProcessingRenderer: this});
8181
}
8282
}
8383

8484
stageRemoved({stage}: StageRemovedProps) {
85-
if (this.renderPasses.has(stage)) {
86-
const renderPass = this.renderPasses.get(stage)!;
87-
this.renderPasses.delete(stage);
85+
if (this.stagePasses.has(stage)) {
86+
const renderPass = this.stagePasses.get(stage)!;
87+
this.stagePasses.delete(stage);
8888
this.removePass(renderPass);
8989
renderPass.dispose();
9090

0 commit comments

Comments
 (0)