{"version":3,"file":"BaseSurface.mjs","sources":["../../src/curve/BaseSurface.ts"],"sourcesContent":["import { IPointData, Matrix, Point } from '@pixi/math';\r\nimport { IWorldTransform } from './ProjectionSurface';\r\nimport { Dict } from '@pixi/utils';\r\n\r\nconst p = [new Point(), new Point(), new Point(), new Point()];\r\nconst a = [0, 0, 0, 0];\r\n\r\nexport abstract class Surface implements IWorldTransform\r\n{\r\n    surfaceID = 'default';\r\n\r\n    _updateID = 0;\r\n\r\n    vertexSrc = '';\r\n    fragmentSrc = '';\r\n\r\n    // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n    fillUniforms(uniforms: Dict<any>): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n\r\n    }\r\n\r\n    clear(): void\r\n    // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n    {\r\n\r\n    }\r\n\r\n    /**\r\n     * made for bilinear, other things will need adjustments, like test if (0) is inside\r\n     * @param {ArrayLike<number>} v\r\n     * @param out\r\n     * @param {Matrix} after\r\n     */\r\n    // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\r\n    boundsQuad(v: ArrayLike<number>, out: any, after?: Matrix): void\r\n    {\r\n        let minX = out[0]; let\r\n            minY = out[1];\r\n        let maxX = out[0]; let\r\n            maxY = out[1];\r\n\r\n        for (let i = 2; i < 8; i += 2)\r\n        {\r\n            if (minX > out[i]) minX = out[i];\r\n            if (maxX < out[i]) maxX = out[i];\r\n            if (minY > out[i + 1]) minY = out[i + 1];\r\n            if (maxY < out[i + 1]) maxY = out[i + 1];\r\n        }\r\n\r\n        p[0].set(minX, minY);\r\n        this.apply(p[0], p[0]);\r\n        p[1].set(maxX, minY);\r\n        this.apply(p[1], p[1]);\r\n        p[2].set(maxX, maxY);\r\n        this.apply(p[2], p[2]);\r\n        p[3].set(minX, maxY);\r\n        this.apply(p[3], p[3]);\r\n\r\n        if (after)\r\n        {\r\n            after.apply(p[0], p[0]);\r\n            after.apply(p[1], p[1]);\r\n            after.apply(p[2], p[2]);\r\n            after.apply(p[3], p[3]);\r\n            out[0] = p[0].x;\r\n            out[1] = p[0].y;\r\n            out[2] = p[1].x;\r\n            out[3] = p[1].y;\r\n            out[4] = p[2].x;\r\n            out[5] = p[2].y;\r\n            out[6] = p[3].x;\r\n            out[7] = p[3].y;\r\n        }\r\n        else\r\n        {\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                if (p[i].y < p[0].y || (p[i].y === p[0].y && p[i].x < p[0].x))\r\n                {\r\n                    const t = p[0];\r\n\r\n                    p[0] = p[i];\r\n                    p[i] = t;\r\n                }\r\n            }\r\n\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                a[i] = Math.atan2(p[i].y - p[0].y, p[i].x - p[0].x);\r\n            }\r\n            for (let i = 1; i <= 3; i++)\r\n            {\r\n                for (let j = i + 1; j <= 3; j++)\r\n                {\r\n                    if (a[i] > a[j])\r\n                    {\r\n                        const t = p[i];\r\n\r\n                        p[i] = p[j];\r\n                        p[j] = t;\r\n                        const t2 = a[i];\r\n\r\n                        a[i] = a[j];\r\n                        a[j] = t2;\r\n                    }\r\n                }\r\n            }\r\n\r\n            out[0] = p[0].x;\r\n            out[1] = p[0].y;\r\n            out[2] = p[1].x;\r\n            out[3] = p[1].y;\r\n            out[4] = p[2].x;\r\n            out[5] = p[2].y;\r\n            out[6] = p[3].x;\r\n            out[7] = p[3].y;\r\n\r\n            if (((p[3].x - p[2].x) * (p[1].y - p[2].y)) - ((p[1].x - p[2].x) * (p[3].y - p[2].y)) < 0)\r\n            {\r\n                // triangle!!!\r\n                out[4] = p[3].x;\r\n                out[5] = p[3].y;\r\n\r\n                return;\r\n            }\r\n        }\r\n    }\r\n\r\n    abstract apply(pos: IPointData, newPos: IPointData): IPointData;\r\n\r\n    // TODO: remove props\r\n    abstract applyInverse(pos: IPointData, newPos: IPointData): IPointData;\r\n}\r\n"],"names":[],"mappings":"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"}