Skip to content

Commit

Permalink
Merge pull request #55 from demike/feat/before-render-callbacks-for-v…
Browse files Browse the repository at this point in the history
…iews

feat: emit before renderer pass
  • Loading branch information
demike authored Jun 7, 2024
2 parents b3bc6a9 + 7462880 commit 7b0deea
Show file tree
Hide file tree
Showing 2 changed files with 19 additions and 0 deletions.
3 changes: 3 additions & 0 deletions projects/ngx-three/src/lib/ThEngine.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -137,6 +137,9 @@ export class ThEngineService implements OnDestroy {
continue;
}
this.applyRendererParametersFromView(view, renderer);
if (isObserved(view.onCurrentRendererPass)) {
this.ngZone.run(() => view.onCurrentRendererPass.emit({ renderer, scene, camera, engine: this }));
}
if (view.effectComposer) {
view.effectComposer.render();
return;
Expand Down
16 changes: 16 additions & 0 deletions projects/ngx-three/src/lib/ThView.ts
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,22 @@ export class ThView implements OnInit {
@Input()
public scene?: ThScene;

/**
* Emits before the render loop starts for this view (before effectComposer or main render pass, but after setting up the viewPort on the renderer).
* It emits for every renderer.
* It can be used to modify the scene, camera or renderer before rendering
* and to do additional render passes
*
* @Note onRender is called before this event (and only once for all renderers)
*/
@Output()
onCurrentRendererPass = new EventEmitter<{
renderer: Renderer;
scene: ThScene;
camera: ThCamera;
engine: ThEngineService;
}>();

@ContentChild(ThScene)
public set contentScene(scene: ThScene | undefined) {
if (scene) {
Expand Down

0 comments on commit 7b0deea

Please sign in to comment.