import type { Effect } from "postprocessing";

import { EffectProviderResult, PostProcessingEffect } from "../PostProcessingEffect.js";

/**
 * [EffectWrapper](https://engine.needle.tools/docs/api/EffectWrapper) wraps a custom postprocessing effect to integrate it with the Needle Engine post-processing pipeline.
 *
 * @category Effects
 * @group Components
 */
export class EffectWrapper extends PostProcessingEffect {

    readonly effect: Effect;

    constructor(effect: Effect) {
        super();
        this.effect = effect;
    }

    get typeName(): string {
        return this.effect.constructor.name;
    }

    onCreateEffect(): EffectProviderResult | undefined {
        return this.effect;
    }

}