{"version":3,"file":"HelloSystem.mjs","sources":["../../../../../src/rendering/renderers/shared/startup/HelloSystem.ts"],"sourcesContent":["import { ExtensionType } from '../../../../extensions/Extensions';\nimport { sayHello } from '../../../../utils/sayHello';\nimport { type Renderer, RendererType } from '../../types';\n\nimport type { WebGLRenderer } from '../../gl/WebGLRenderer';\nimport type { System } from '../system/System';\n\n/**\n * Options for the startup system.\n * @property {boolean} [hello=false] - Whether to log the version and type information of renderer to console.\n * @memberof rendering\n */\nexport interface HelloSystemOptions\n{\n    /**\n     * Whether to log the version and type information of renderer to console.\n     * @memberof rendering.SharedRendererOptions\n     * @default false\n     */\n    hello: boolean;\n}\n\n/**\n * A simple system responsible for initiating the renderer.\n * @memberof rendering\n */\nexport class HelloSystem implements System<HelloSystemOptions>\n{\n    /** @ignore */\n    public static extension = {\n        type: [\n            ExtensionType.WebGLSystem,\n            ExtensionType.WebGPUSystem,\n            ExtensionType.CanvasSystem,\n        ],\n        name: 'hello',\n        priority: -2,\n    } as const;\n\n    /** The default options for the system. */\n    public static defaultOptions: HelloSystemOptions = {\n        /** {@link WebGLOptions.hello} */\n        hello: false,\n    };\n\n    private readonly _renderer: Renderer;\n\n    constructor(renderer: Renderer)\n    {\n        this._renderer = renderer;\n    }\n\n    /**\n     * It all starts here! This initiates every system, passing in the options for any system by name.\n     * @param options - the config for the renderer and all its systems\n     */\n    public init(options: HelloSystemOptions): void\n    {\n        if (options.hello)\n        {\n            let name = this._renderer.name;\n\n            if (this._renderer.type === RendererType.WEBGL)\n            {\n                name += ` ${(this._renderer as WebGLRenderer).context.webGLVersion}`;\n            }\n\n            sayHello(name);\n        }\n    }\n}\n"],"names":[],"mappings":";;;;;AA0BO,MAAM,WACb,CAAA;AAAA,EAoBI,YAAY,QACZ,EAAA;AACI,IAAA,IAAA,CAAK,SAAY,GAAA,QAAA,CAAA;AAAA,GACrB;AAAA;AAAA;AAAA;AAAA;AAAA,EAMO,KAAK,OACZ,EAAA;AACI,IAAA,IAAI,QAAQ,KACZ,EAAA;AACI,MAAI,IAAA,IAAA,GAAO,KAAK,SAAU,CAAA,IAAA,CAAA;AAE1B,MAAA,IAAI,IAAK,CAAA,SAAA,CAAU,IAAS,KAAA,YAAA,CAAa,KACzC,EAAA;AACI,QAAA,IAAA,IAAQ,CAAK,CAAA,EAAA,IAAA,CAAK,SAA4B,CAAA,OAAA,CAAQ,YAAY,CAAA,CAAA,CAAA;AAAA,OACtE;AAEA,MAAA,QAAA,CAAS,IAAI,CAAA,CAAA;AAAA,KACjB;AAAA,GACJ;AACJ,CAAA;AAAA;AA5Ca,WAAA,CAGK,SAAY,GAAA;AAAA,EACtB,IAAM,EAAA;AAAA,IACF,aAAc,CAAA,WAAA;AAAA,IACd,aAAc,CAAA,YAAA;AAAA,IACd,aAAc,CAAA,YAAA;AAAA,GAClB;AAAA,EACA,IAAM,EAAA,OAAA;AAAA,EACN,QAAU,EAAA,CAAA,CAAA;AACd,CAAA,CAAA;AAAA;AAXS,WAAA,CAcK,cAAqC,GAAA;AAAA;AAAA,EAE/C,KAAO,EAAA,KAAA;AACX,CAAA;;;;"}