{"version":3,"file":"onRenderMixin.mjs","sources":["../../../../src/scene/container/container-mixins/onRenderMixin.ts"],"sourcesContent":["import type { Renderer } from '../../../rendering/renderers/types';\nimport type { Container } from '../Container';\n\n/** @internal */\nexport interface OnRenderMixinConstructor\n{\n    /**\n     * This callback is used when the container is rendered. It runs every frame during the render process,\n     * making it ideal for per-frame updates and animations.\n     *\n     * > [!NOTE] In v7 many users used `updateTransform` for this, however the way v8 renders objects is different\n     * > and \"updateTransform\" is no longer called every frame\n     * @example\n     * ```ts\n     * // Basic rotation animation\n     * const container = new Container();\n     * container.onRender = () => {\n     *     container.rotation += 0.01;\n     * };\n     *\n     * // Cleanup when done\n     * container.onRender = null; // Removes callback\n     * ```\n     * @param renderer - The renderer instance\n     * @see {@link Renderer} For renderer capabilities\n     */\n    onRender?: ((renderer: Renderer) => void) | null;\n}\n\n/**\n * The OnRenderMixin interface provides a way to define a callback that is executed\n * every time the container is rendered. This is useful for adding custom rendering logic\n * or animations that need to be updated each frame.\n * @category scene\n * @advanced\n */\nexport interface OnRenderMixin extends Required<OnRenderMixinConstructor>\n{\n    /** @private */\n    _onRender: ((renderer: Renderer) => void) | null;\n}\n\n/** @internal */\nexport const onRenderMixin: Partial<Container> = {\n    _onRender: null,\n\n    set onRender(func: (renderer: Renderer) => void)\n    {\n        const renderGroup = this.renderGroup || this.parentRenderGroup;\n\n        if (!func)\n        {\n            if (this._onRender)\n            {\n                renderGroup?.removeOnRender(this);\n            }\n\n            this._onRender = null;\n\n            return;\n        }\n\n        if (!this._onRender)\n        {\n            renderGroup?.addOnRender(this);\n        }\n\n        this._onRender = func;\n    },\n\n    get onRender(): (renderer: Renderer) => void\n    {\n        return this._onRender;\n    }\n} as Container;\n"],"names":[],"mappings":";AA2CO,MAAM,aAAA,GAAoC;AAAA,EAC7C,SAAA,EAAW,IAAA;AAAA,EAEX,IAAI,SAAS,IAAA,EACb;AACI,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,WAAA,IAAe,IAAA,CAAK,iBAAA;AAE7C,IAAA,IAAI,CAAC,IAAA,EACL;AACI,MAAA,IAAI,KAAK,SAAA,EACT;AACI,QAAA,WAAA,EAAa,eAAe,IAAI,CAAA;AAAA,MACpC;AAEA,MAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAEjB,MAAA;AAAA,IACJ;AAEA,IAAA,IAAI,CAAC,KAAK,SAAA,EACV;AACI,MAAA,WAAA,EAAa,YAAY,IAAI,CAAA;AAAA,IACjC;AAEA,IAAA,IAAA,CAAK,SAAA,GAAY,IAAA;AAAA,EACrB,CAAA;AAAA,EAEA,IAAI,QAAA,GACJ;AACI,IAAA,OAAO,IAAA,CAAK,SAAA;AAAA,EAChB;AACJ;;;;"}