@babylonjs/smart-filters 0.2.0-alpha → 0.3.1-alpha
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/baseBlock.d.ts +1 -1
- package/dist/blocks/baseBlock.d.ts.map +1 -1
- package/dist/blocks/baseBlock.js +1 -1
- package/dist/blocks/baseBlock.js.map +1 -1
- package/dist/blocks/copyBlock.d.ts +2 -3
- package/dist/blocks/copyBlock.d.ts.map +1 -1
- package/dist/blocks/copyBlock.js +4 -24
- package/dist/blocks/copyBlock.js.map +1 -1
- package/dist/blocks/copyBlock.shader.d.ts +13 -0
- package/dist/blocks/copyBlock.shader.d.ts.map +1 -0
- package/dist/blocks/copyBlock.shader.js +34 -0
- package/dist/blocks/copyBlock.shader.js.map +1 -0
- package/dist/blocks/inputBlock.d.ts +41 -5
- package/dist/blocks/inputBlock.d.ts.map +1 -1
- package/dist/blocks/inputBlock.deserializer.d.ts +14 -0
- package/dist/blocks/inputBlock.deserializer.d.ts.map +1 -0
- package/dist/blocks/inputBlock.deserializer.js +46 -0
- package/dist/blocks/inputBlock.deserializer.js.map +1 -0
- package/dist/blocks/inputBlock.js +16 -6
- package/dist/blocks/inputBlock.js.map +1 -1
- package/dist/blocks/inputBlock.serialization.types.d.ts +74 -0
- package/dist/blocks/inputBlock.serialization.types.d.ts.map +1 -0
- package/dist/blocks/inputBlock.serialization.types.js +2 -0
- package/dist/blocks/inputBlock.serialization.types.js.map +1 -0
- package/dist/blocks/inputBlock.serializer.d.ts +6 -0
- package/dist/blocks/inputBlock.serializer.d.ts.map +1 -0
- package/dist/blocks/inputBlock.serializer.js +115 -0
- package/dist/blocks/inputBlock.serializer.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/serialization/index.d.ts +5 -0
- package/dist/serialization/index.d.ts.map +1 -0
- package/dist/serialization/index.js +5 -0
- package/dist/serialization/index.js.map +1 -0
- package/dist/serialization/serializedSmartFilter.d.ts +6 -0
- package/dist/serialization/serializedSmartFilter.d.ts.map +1 -0
- package/dist/serialization/serializedSmartFilter.js +2 -0
- package/dist/serialization/serializedSmartFilter.js.map +1 -0
- package/dist/serialization/smartFilterDeserializer.d.ts +25 -0
- package/dist/serialization/smartFilterDeserializer.d.ts.map +1 -0
- package/dist/serialization/smartFilterDeserializer.js +90 -0
- package/dist/serialization/smartFilterDeserializer.js.map +1 -0
- package/dist/serialization/smartFilterSerializer.d.ts +23 -0
- package/dist/serialization/smartFilterSerializer.d.ts.map +1 -0
- package/dist/serialization/smartFilterSerializer.js +91 -0
- package/dist/serialization/smartFilterSerializer.js.map +1 -0
- package/dist/serialization/v1/defaultBlockSerializer.d.ts +9 -0
- package/dist/serialization/v1/defaultBlockSerializer.d.ts.map +1 -0
- package/dist/serialization/v1/defaultBlockSerializer.js +16 -0
- package/dist/serialization/v1/defaultBlockSerializer.js.map +1 -0
- package/dist/serialization/v1/index.d.ts +3 -0
- package/dist/serialization/v1/index.d.ts.map +1 -0
- package/dist/serialization/v1/index.js +3 -0
- package/dist/serialization/v1/index.js.map +1 -0
- package/dist/serialization/v1/serialization.types.d.ts +83 -0
- package/dist/serialization/v1/serialization.types.d.ts.map +1 -0
- package/dist/serialization/v1/serialization.types.js +2 -0
- package/dist/serialization/v1/serialization.types.js.map +1 -0
- package/dist/smartFilter.d.ts +2 -2
- package/dist/smartFilter.d.ts.map +1 -1
- package/dist/smartFilter.js +9 -6
- package/dist/smartFilter.js.map +1 -1
- package/dist/utils/buildTools/determineVersion.d.ts +36 -0
- package/dist/utils/buildTools/determineVersion.d.ts.map +1 -0
- package/dist/utils/buildTools/determineVersion.js +109 -0
- package/dist/utils/buildTools/determineVersion.js.map +1 -0
- package/dist/utils/buildTools/shaderConverter.d.ts +2 -0
- package/dist/utils/buildTools/shaderConverter.d.ts.map +1 -0
- package/dist/utils/buildTools/shaderConverter.js +277 -0
- package/dist/utils/buildTools/shaderConverter.js.map +1 -0
- package/dist/utils/buildTools/versionUp.d.ts +2 -0
- package/dist/utils/buildTools/versionUp.d.ts.map +1 -0
- package/dist/utils/buildTools/versionUp.js +45 -0
- package/dist/utils/buildTools/versionUp.js.map +1 -0
- package/dist/utils/textureLoaders.d.ts +3 -1
- package/dist/utils/textureLoaders.d.ts.map +1 -1
- package/dist/utils/textureLoaders.js +3 -2
- package/dist/utils/textureLoaders.js.map +1 -1
- package/dist/utils/uniqueIdGenerator.d.ts +19 -0
- package/dist/utils/uniqueIdGenerator.d.ts.map +1 -0
- package/dist/utils/uniqueIdGenerator.js +27 -0
- package/dist/utils/uniqueIdGenerator.js.map +1 -0
- package/package.json +11 -6
- package/readme.md +12 -0
- package/src/blocks/baseBlock.ts +2 -3
- package/src/blocks/copyBlock.fragment.glsl +5 -0
- package/src/blocks/copyBlock.shader.ts +36 -0
- package/src/blocks/copyBlock.ts +4 -29
- package/src/blocks/inputBlock.deserializer.ts +60 -0
- package/src/blocks/inputBlock.serialization.types.ts +95 -0
- package/src/blocks/inputBlock.serializer.ts +132 -0
- package/src/blocks/inputBlock.ts +51 -7
- package/src/index.ts +2 -1
- package/src/serialization/index.ts +4 -0
- package/src/serialization/serializedSmartFilter.ts +6 -0
- package/src/serialization/smartFilterDeserializer.ts +127 -0
- package/src/serialization/smartFilterSerializer.ts +113 -0
- package/src/serialization/v1/defaultBlockSerializer.ts +18 -0
- package/src/serialization/v1/index.ts +2 -0
- package/src/serialization/v1/serialization.types.ts +108 -0
- package/src/smartFilter.ts +10 -8
- package/src/utils/buildTools/determineVersion.ts +127 -0
- package/src/utils/buildTools/shaderConverter.ts +399 -0
- package/src/utils/buildTools/versionUp.ts +52 -0
- package/src/utils/textureLoaders.ts +18 -3
- package/src/utils/uniqueIdGenerator.ts +28 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"smartFilter.d.ts","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,oCAAoC,CAAC;AACrE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AAC5E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,6EAA6E,CAAC;AAO/G;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG;IAC7B;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,0BAA0B,CAAC;IAC7C;;;;OAIG;IACH,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;IAClC;;OAEG;IACH,QAAQ,CAAC,sBAAsB,EAAE,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;CACpD,CAAC;AAEF;;;;;;GAMG;AACH,qBAAa,WAAW;IACpB;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,SAAgB,MAAM,EAAE,eAAe,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAErE;;OAEG;IACI,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAQ;IAEzC;;OAEG;IACI,UAAU,EAAE,QAAQ,CAAC,WAAW,CAAC,CAAQ;IAEhD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAmB;IACnD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAE3C;;;OAGG;gBACS,IAAI,EAAE,MAAM;IAQxB;;OAEG;IACH,IAAW,cAAc,IAAI,aAAa,CAAC,SAAS,CAAC,CAEpD;IAED;;OAEG;IACI,YAAY,IAAI,MAAM;IAI7B;;;;;OAKG;IACI,aAAa,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAe5C;;;;;OAKG;IACI,WAAW,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAc1C,OAAO,CAAC,sCAAsC;IAwB9C;;;;;OAKG;IACU,kBAAkB,CAC3B,MAAM,EAAE,UAAU,EAClB,qBAAqB,CAAC,EAAE,qBAAqB,GAC9C,OAAO,CAAC,kBAAkB,CAAC;IAiC9B;;;;OAIG;IACI,2BAA2B,CAAC,IAAI,EAAE,MAAM,IAAI,GAAG,IAAI;CAoB7D"}
|
package/dist/smartFilter.js
CHANGED
|
@@ -25,7 +25,6 @@ export class SmartFilter {
|
|
|
25
25
|
this.comments = null;
|
|
26
26
|
/**
|
|
27
27
|
* Data used by the smart filter editor.
|
|
28
|
-
* TODO. strong type and hide this.
|
|
29
28
|
*/
|
|
30
29
|
this.editorData = null;
|
|
31
30
|
this.name = name;
|
|
@@ -143,11 +142,15 @@ export class SmartFilter {
|
|
|
143
142
|
block._mergeIntoSmartFilter(mergedAggregateBlocks);
|
|
144
143
|
}
|
|
145
144
|
});
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
145
|
+
try {
|
|
146
|
+
// Do the passed in work
|
|
147
|
+
work();
|
|
148
|
+
}
|
|
149
|
+
finally {
|
|
150
|
+
// Restore all aggregate blocks, even if work throws
|
|
151
|
+
for (const block of mergedAggregateBlocks) {
|
|
152
|
+
block._unmergeFromSmartFilter();
|
|
153
|
+
}
|
|
151
154
|
}
|
|
152
155
|
}
|
|
153
156
|
}
|
package/dist/smartFilter.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"smartFilter.js","sourceRoot":"","sources":["../src/smartFilter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { Nullable } from "@babylonjs/core/types";
|
|
2
|
+
import type { ExecException } from "child_process";
|
|
3
|
+
/**
|
|
4
|
+
* Takes in a semver string (e.g. "0.1.0" or "0.1.0-alpha") and removes any prerelease flag.
|
|
5
|
+
* @param version - The semver string to operate on
|
|
6
|
+
* @returns The version string with the prerelease flag removed
|
|
7
|
+
*/
|
|
8
|
+
export declare function removePrereleaseFlags(version: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Given the npmVersion, packageJSONVersion, and alpha flag, determines the version to use
|
|
11
|
+
* @param npmVersion - The version from the NPM registry
|
|
12
|
+
* @param packageJSONVersion - The version from the package.json file
|
|
13
|
+
* @param alpha - A flag to indicate if the version should have an alpha prerelease flag
|
|
14
|
+
* @returns The version to use
|
|
15
|
+
*/
|
|
16
|
+
export declare function determineVersion(npmVersion: Nullable<string>, packageJSONVersion: string, alpha: boolean): string;
|
|
17
|
+
/**
|
|
18
|
+
* The supported version types
|
|
19
|
+
*/
|
|
20
|
+
export type VersionType = "preview" | "latest";
|
|
21
|
+
/**
|
|
22
|
+
* Handles error cases and returns the JSON of the package versions
|
|
23
|
+
* @param versionType - The type of version to get
|
|
24
|
+
* @param err - The error object
|
|
25
|
+
* @param stdout - The stdout string
|
|
26
|
+
* @returns The JSON of the package versions
|
|
27
|
+
*/
|
|
28
|
+
export declare function getNpmVersion(versionType: VersionType, err: Nullable<ExecException>, stdout: string): Nullable<string>;
|
|
29
|
+
/**
|
|
30
|
+
* Compares two semver strings, returning -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
|
|
31
|
+
* @param version1 - The first semver string
|
|
32
|
+
* @param version2 - The second semver string
|
|
33
|
+
* @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
|
|
34
|
+
*/
|
|
35
|
+
export declare function compareVersions(version1: string, version2: string): number;
|
|
36
|
+
//# sourceMappingURL=determineVersion.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"determineVersion.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/determineVersion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AA6BnD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAO7D;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,UAAU,EAAE,QAAQ,CAAC,MAAM,CAAC,EAAE,kBAAkB,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,GAAG,MAAM,CAmBjH;AAED;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG,SAAS,GAAG,QAAQ,CAAC;AAE/C;;;;;;GAMG;AACH,wBAAgB,aAAa,CACzB,WAAW,EAAE,WAAW,EACxB,GAAG,EAAE,QAAQ,CAAC,aAAa,CAAC,EAC5B,MAAM,EAAE,MAAM,GACf,QAAQ,CAAC,MAAM,CAAC,CAWlB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAmB1E"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Determines if the major and minor versions of two semver strings match
|
|
3
|
+
* @param version1 - The first semver string
|
|
4
|
+
* @param version2 - The second semver string
|
|
5
|
+
* @returns True if the major and minor versions match, false otherwise
|
|
6
|
+
*/
|
|
7
|
+
function majorAndMinorVersionsMatch(version1, version2) {
|
|
8
|
+
const version1split = version1.split(".");
|
|
9
|
+
const version2split = version2.split(".");
|
|
10
|
+
return version1split[0] === version2split[0] && version1split[1] === version2split[1];
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Takes in a semver string (e.g. "0.1.0") and increments the patch version.
|
|
14
|
+
* Note: it does not preserve any prerelease flags in the patch version.
|
|
15
|
+
* @param version - The semver string to operate on
|
|
16
|
+
* @returns The incremented version string
|
|
17
|
+
*/
|
|
18
|
+
function incrementPatchVersion(version) {
|
|
19
|
+
const spl = version.split(".");
|
|
20
|
+
if (spl.length < 3) {
|
|
21
|
+
throw new Error("version string must have at least 3 parts");
|
|
22
|
+
}
|
|
23
|
+
spl[spl.length - 1] = (Number.parseInt(spl[spl.length - 1]) + 1).toString();
|
|
24
|
+
return spl.join(".");
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Takes in a semver string (e.g. "0.1.0" or "0.1.0-alpha") and removes any prerelease flag.
|
|
28
|
+
* @param version - The semver string to operate on
|
|
29
|
+
* @returns The version string with the prerelease flag removed
|
|
30
|
+
*/
|
|
31
|
+
export function removePrereleaseFlags(version) {
|
|
32
|
+
const spl = version.split(".");
|
|
33
|
+
if (spl.length < 3) {
|
|
34
|
+
throw new Error("version string must have at least 3 parts");
|
|
35
|
+
}
|
|
36
|
+
spl[spl.length - 1] = Number.parseInt(spl[spl.length - 1]).toString();
|
|
37
|
+
return spl.join(".");
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Given the npmVersion, packageJSONVersion, and alpha flag, determines the version to use
|
|
41
|
+
* @param npmVersion - The version from the NPM registry
|
|
42
|
+
* @param packageJSONVersion - The version from the package.json file
|
|
43
|
+
* @param alpha - A flag to indicate if the version should have an alpha prerelease flag
|
|
44
|
+
* @returns The version to use
|
|
45
|
+
*/
|
|
46
|
+
export function determineVersion(npmVersion, packageJSONVersion, alpha) {
|
|
47
|
+
packageJSONVersion = removePrereleaseFlags(packageJSONVersion);
|
|
48
|
+
npmVersion = npmVersion === null ? null : removePrereleaseFlags(npmVersion);
|
|
49
|
+
let versionToUse;
|
|
50
|
+
if (npmVersion === null || !majorAndMinorVersionsMatch(npmVersion, packageJSONVersion)) {
|
|
51
|
+
console.log("Major & minor versions do not match: using the current package.json version");
|
|
52
|
+
versionToUse = packageJSONVersion;
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
console.log("Major & minor versions match: using the NPM registry version with an incremented patch version.");
|
|
56
|
+
versionToUse = incrementPatchVersion(npmVersion);
|
|
57
|
+
}
|
|
58
|
+
if (alpha) {
|
|
59
|
+
console.log("Ensuring -alpha prerelease flag is present");
|
|
60
|
+
versionToUse += "-alpha";
|
|
61
|
+
}
|
|
62
|
+
return versionToUse;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Handles error cases and returns the JSON of the package versions
|
|
66
|
+
* @param versionType - The type of version to get
|
|
67
|
+
* @param err - The error object
|
|
68
|
+
* @param stdout - The stdout string
|
|
69
|
+
* @returns The JSON of the package versions
|
|
70
|
+
*/
|
|
71
|
+
export function getNpmVersion(versionType, err, stdout) {
|
|
72
|
+
let npmVersion = null;
|
|
73
|
+
if ((err === null || err === void 0 ? void 0 : err.message) && err.message.indexOf("E404") !== -1) {
|
|
74
|
+
console.warn(`NPM registry does not have any ${versionType} version`);
|
|
75
|
+
}
|
|
76
|
+
else if (err) {
|
|
77
|
+
console.error(err);
|
|
78
|
+
throw err;
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
npmVersion = stdout;
|
|
82
|
+
}
|
|
83
|
+
return npmVersion;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Compares two semver strings, returning -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
|
|
87
|
+
* @param version1 - The first semver string
|
|
88
|
+
* @param version2 - The second semver string
|
|
89
|
+
* @returns -1 if version1 is less than version2, 1 if version1 is greater than version2, and 0 if they are equal
|
|
90
|
+
*/
|
|
91
|
+
export function compareVersions(version1, version2) {
|
|
92
|
+
const version1split = removePrereleaseFlags(version1).split(".");
|
|
93
|
+
const version2split = removePrereleaseFlags(version2).split(".");
|
|
94
|
+
if (version1split.length !== 3 || version2split.length !== 3) {
|
|
95
|
+
throw new Error("version strings must have 3 parts");
|
|
96
|
+
}
|
|
97
|
+
for (let i = 0; i < 3; i++) {
|
|
98
|
+
const v1 = Number.parseInt(version1split[i]);
|
|
99
|
+
const v2 = Number.parseInt(version2split[i]);
|
|
100
|
+
if (v1 < v2) {
|
|
101
|
+
return -1;
|
|
102
|
+
}
|
|
103
|
+
else if (v1 > v2) {
|
|
104
|
+
return 1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=determineVersion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"determineVersion.js","sourceRoot":"","sources":["../../../src/utils/buildTools/determineVersion.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaderConverter.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import * as path from "path";
|
|
3
|
+
const TYPE_IMPORT_PATH = "@TYPE_IMPORT_PATH@";
|
|
4
|
+
const VERTEX_SHADER = "@VERTEX_SHADER@";
|
|
5
|
+
const UNIFORMS = "@UNIFORMS@";
|
|
6
|
+
const CONSTS_VALUE = "@CONSTS@";
|
|
7
|
+
const CONSTS_PROPERTY = "@CONSTS_PROPERTY@";
|
|
8
|
+
const MAIN_INPUT_NAME = "@MAIN_INPUT_NAME@";
|
|
9
|
+
const MAIN_FUNCTION_NAME = "@MAIN_FUNCTION_NAME@";
|
|
10
|
+
const FUNCTIONS = "@FUNCTIONS@";
|
|
11
|
+
const FUNCTION_NAME = "@FUNCTION_NAME@";
|
|
12
|
+
const FUNCTION_CODE = "@FUNCTION_CODE@";
|
|
13
|
+
const UNIFORM_NAMES = "@UNIFORM_NAMES@";
|
|
14
|
+
const ConstsTemplate = `
|
|
15
|
+
const: \`${CONSTS_VALUE}\`,`;
|
|
16
|
+
const FunctionTemplate = `
|
|
17
|
+
{
|
|
18
|
+
name: "${FUNCTION_NAME}",
|
|
19
|
+
code: \`
|
|
20
|
+
${FUNCTION_CODE}
|
|
21
|
+
\`,
|
|
22
|
+
},`;
|
|
23
|
+
const CodeLinePrefix = " ";
|
|
24
|
+
const UniformLinePrefix = " ";
|
|
25
|
+
const ConstLinePrefix = " ";
|
|
26
|
+
const ShaderTemplate = `import type { ShaderProgram } from "${TYPE_IMPORT_PATH}";
|
|
27
|
+
|
|
28
|
+
/**
|
|
29
|
+
* The shader program for the block.
|
|
30
|
+
*/
|
|
31
|
+
export const shaderProgram: ShaderProgram = {
|
|
32
|
+
vertex: ${VERTEX_SHADER},
|
|
33
|
+
fragment: {
|
|
34
|
+
uniform: \`${UNIFORMS}
|
|
35
|
+
uniform bool _disabled_;\`,${CONSTS_PROPERTY}
|
|
36
|
+
mainInputTexture: "${MAIN_INPUT_NAME}",
|
|
37
|
+
mainFunctionName: "${MAIN_FUNCTION_NAME}",
|
|
38
|
+
functions: [${FUNCTIONS}
|
|
39
|
+
],
|
|
40
|
+
},
|
|
41
|
+
};
|
|
42
|
+
|
|
43
|
+
/**
|
|
44
|
+
* The uniform names for this shader, to be used in the shader binding so
|
|
45
|
+
* that the names are always in sync.
|
|
46
|
+
*/
|
|
47
|
+
export const uniforms = {
|
|
48
|
+
${UNIFORM_NAMES}
|
|
49
|
+
};
|
|
50
|
+
`;
|
|
51
|
+
const UniformNameLinePrefix = " ";
|
|
52
|
+
const GetFunctionNamesRegEx = /\S*\w+\s+(\w+)\s*\(/g;
|
|
53
|
+
/**
|
|
54
|
+
* Converts a single shader
|
|
55
|
+
* @param fragmentShaderPath - The path to the fragment file for the shader
|
|
56
|
+
* @param importPath - The path to import the ShaderProgram type from
|
|
57
|
+
*/
|
|
58
|
+
function convertShader(fragmentShaderPath, importPath) {
|
|
59
|
+
console.log(`Processing fragment shader: ${fragmentShaderPath}`);
|
|
60
|
+
// See if there is a corresponding vertex shader
|
|
61
|
+
let vertexShader = undefined;
|
|
62
|
+
const vertexShaderPath = fragmentShaderPath.replace(".fragment.glsl", ".vertex.glsl");
|
|
63
|
+
if (fs.existsSync(vertexShaderPath)) {
|
|
64
|
+
vertexShader = fs.readFileSync(vertexShaderPath, "utf8");
|
|
65
|
+
}
|
|
66
|
+
if (vertexShader) {
|
|
67
|
+
console.log("Found vertex shader");
|
|
68
|
+
}
|
|
69
|
+
// Read the fragment shader
|
|
70
|
+
const fragmentShader = fs.readFileSync(fragmentShaderPath, "utf8");
|
|
71
|
+
// Version check
|
|
72
|
+
const versionsFound = [...fragmentShader.matchAll(/\/\/\s+\[Smart Filter Shader Version\]\s*=\s*(\d+)/g)].map((match) => match[1]);
|
|
73
|
+
let version = 1;
|
|
74
|
+
if (versionsFound.length === 1 && versionsFound[0]) {
|
|
75
|
+
version = parseInt(versionsFound[0]);
|
|
76
|
+
}
|
|
77
|
+
console.log(`Shader version: ${version}`);
|
|
78
|
+
let fragmentShaderInfo;
|
|
79
|
+
switch (version) {
|
|
80
|
+
case 1:
|
|
81
|
+
{
|
|
82
|
+
fragmentShaderInfo = processFragmentShaderV1(fragmentShader);
|
|
83
|
+
}
|
|
84
|
+
break;
|
|
85
|
+
default: {
|
|
86
|
+
throw new Error(`Unsupported shader version: ${version}`);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
// Write the shader TS file
|
|
90
|
+
const shaderFile = fragmentShaderPath.replace(".fragment.glsl", ".shader.ts");
|
|
91
|
+
const finalContents = ShaderTemplate.replace(VERTEX_SHADER, vertexShader ? `\`${vertexShader}\`` : "undefined")
|
|
92
|
+
.replace(TYPE_IMPORT_PATH, importPath)
|
|
93
|
+
.replace(UNIFORMS, "\n" + addLinePrefixes(fragmentShaderInfo.finalUniforms.join("\n"), UniformLinePrefix))
|
|
94
|
+
.replace(MAIN_FUNCTION_NAME, fragmentShaderInfo.mainFunctionName)
|
|
95
|
+
.replace(MAIN_INPUT_NAME, fragmentShaderInfo.mainInputName)
|
|
96
|
+
.replace(CONSTS_PROPERTY, fragmentShaderInfo.finalConsts.length > 0
|
|
97
|
+
? ConstsTemplate.replace(CONSTS_VALUE, addLinePrefixes(fragmentShaderInfo.finalConsts.join("\n"), ConstLinePrefix))
|
|
98
|
+
: "")
|
|
99
|
+
.replace(FUNCTIONS, fragmentShaderInfo.extractedFunctions.join(""))
|
|
100
|
+
.replace(UNIFORM_NAMES, addLinePrefixes(fragmentShaderInfo.uniformNames.join("\n"), UniformNameLinePrefix));
|
|
101
|
+
fs.writeFileSync(shaderFile, finalContents);
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Processes a fragment shader
|
|
105
|
+
* @param fragmentShader - The fragment shader to process
|
|
106
|
+
* @returns The processed fragment shader
|
|
107
|
+
*/
|
|
108
|
+
function processFragmentShaderV1(fragmentShader) {
|
|
109
|
+
const fragmentShaderWithNoFunctionBodies = removeFunctionBodies(fragmentShader);
|
|
110
|
+
// Collect uniform, const, and function names which need to be decorated
|
|
111
|
+
// eslint-disable-next-line prettier/prettier
|
|
112
|
+
const uniforms = [...fragmentShader.matchAll(/\S*uniform.*\s(\w*);/g)].map((match) => match[1]);
|
|
113
|
+
console.log(`Uniforms found: ${JSON.stringify(uniforms)}`);
|
|
114
|
+
const consts = [...fragmentShader.matchAll(/\S*const\s+\w*\s+(\w*)\s*=.*;/g)].map((match) => match[1]);
|
|
115
|
+
console.log(`Consts found: ${JSON.stringify(consts)}`);
|
|
116
|
+
const functionNames = [...fragmentShaderWithNoFunctionBodies.matchAll(GetFunctionNamesRegEx)].map((match) => match[1]);
|
|
117
|
+
console.log(`Functions found: ${JSON.stringify(functionNames)}`);
|
|
118
|
+
// Decorate the uniforms, consts, and functions
|
|
119
|
+
const symbolsToDecorate = [...uniforms, ...consts, ...functionNames];
|
|
120
|
+
let fragmentShaderWithRenamedSymbols = fragmentShader;
|
|
121
|
+
for (const symbol of symbolsToDecorate) {
|
|
122
|
+
const regex = new RegExp(`(\\S*(?:\\s|;|,|\\)|\\()+)${symbol}((\\s|;|,|\\)|\\()+)`, "gs");
|
|
123
|
+
fragmentShaderWithRenamedSymbols = fragmentShaderWithRenamedSymbols.replace(regex, `$1_${symbol}_$2`);
|
|
124
|
+
}
|
|
125
|
+
console.log(`${symbolsToDecorate.length} symbol(s) renamed`);
|
|
126
|
+
const uniformNames = uniforms.map((uniform) => `${uniform}: "${uniform}",`);
|
|
127
|
+
// Extract all the uniforms
|
|
128
|
+
const finalUniforms = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(uniform\s.*)/gm)].map((match) => match[1]);
|
|
129
|
+
// Extract all the consts
|
|
130
|
+
const finalConsts = [...fragmentShaderWithRenamedSymbols.matchAll(/^\s*(const\s.*)/gm)].map((match) => match[1]);
|
|
131
|
+
// Find the main input
|
|
132
|
+
const mainInputs = [...fragmentShaderWithRenamedSymbols.matchAll(/\S*uniform.*\s(\w*);\s*\/\/\s*main/gm)].map((match) => match[1]);
|
|
133
|
+
if (mainInputs.length !== 1 || !mainInputs[0]) {
|
|
134
|
+
throw new Error("Exactly one main input must be defined in the shader");
|
|
135
|
+
}
|
|
136
|
+
const mainInputName = mainInputs[0];
|
|
137
|
+
// Extract all the functions
|
|
138
|
+
const { extractedFunctions, mainFunctionName } = extractFunctions(fragmentShaderWithRenamedSymbols, mainInputName);
|
|
139
|
+
return {
|
|
140
|
+
finalUniforms,
|
|
141
|
+
mainFunctionName,
|
|
142
|
+
mainInputName,
|
|
143
|
+
finalConsts,
|
|
144
|
+
extractedFunctions,
|
|
145
|
+
uniformNames,
|
|
146
|
+
};
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Prefixes each line in the input
|
|
150
|
+
* @param input - The input string
|
|
151
|
+
* @param prefix - The prefix to add to each line
|
|
152
|
+
* @returns The input with each line prefixed
|
|
153
|
+
*/
|
|
154
|
+
function addLinePrefixes(input, prefix) {
|
|
155
|
+
return input
|
|
156
|
+
.split("\n")
|
|
157
|
+
.map((line) => prefix + line)
|
|
158
|
+
.join("\n");
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Extracts all the functions from the shader
|
|
162
|
+
* @param fragment - The shader code to process
|
|
163
|
+
* @param mainInputName - The name of the main input
|
|
164
|
+
* @returns A list of functions
|
|
165
|
+
*/
|
|
166
|
+
function extractFunctions(fragment, mainInputName) {
|
|
167
|
+
const lines = fragment.split("\n");
|
|
168
|
+
const extractedFunctions = [];
|
|
169
|
+
let mainFunctionName;
|
|
170
|
+
let inFunction = false;
|
|
171
|
+
let depth = 0;
|
|
172
|
+
let currentFunction = "";
|
|
173
|
+
for (const line of lines) {
|
|
174
|
+
if (!inFunction && line.includes("{")) {
|
|
175
|
+
inFunction = true;
|
|
176
|
+
}
|
|
177
|
+
if (inFunction) {
|
|
178
|
+
currentFunction += line + "\n";
|
|
179
|
+
}
|
|
180
|
+
for (let pos = 0; pos < line.length; pos++) {
|
|
181
|
+
if (line[pos] === "{") {
|
|
182
|
+
depth++;
|
|
183
|
+
}
|
|
184
|
+
else if (line[pos] === "}") {
|
|
185
|
+
depth--;
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
if (inFunction && depth === 0) {
|
|
189
|
+
inFunction = false;
|
|
190
|
+
const { functionBody, functionName, isMainFunction } = processFunctionBody(currentFunction);
|
|
191
|
+
let body = functionBody;
|
|
192
|
+
if (isMainFunction) {
|
|
193
|
+
body = functionBody.replace("{", `{\n if (_disabled_) return texture2D(${mainInputName}, vUV);\n`);
|
|
194
|
+
}
|
|
195
|
+
extractedFunctions.push(FunctionTemplate.replace(FUNCTION_NAME, functionName).replace(FUNCTION_CODE, addLinePrefixes(body, CodeLinePrefix)));
|
|
196
|
+
if (isMainFunction) {
|
|
197
|
+
if (mainFunctionName) {
|
|
198
|
+
throw new Error("Multiple main functions found in shader code");
|
|
199
|
+
}
|
|
200
|
+
mainFunctionName = functionName;
|
|
201
|
+
}
|
|
202
|
+
currentFunction = "";
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
if (!mainFunctionName) {
|
|
206
|
+
throw new Error("No main function found in shader code");
|
|
207
|
+
}
|
|
208
|
+
return { extractedFunctions, mainFunctionName };
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Creates code for a ShaderFunction instance from the body of a function
|
|
212
|
+
* @param functionBody - The body of the function
|
|
213
|
+
* @returns The body, name, and whether the function is the main function
|
|
214
|
+
*/
|
|
215
|
+
function processFunctionBody(functionBody) {
|
|
216
|
+
// Extract the function name
|
|
217
|
+
const functionNamesFound = [...functionBody.matchAll(GetFunctionNamesRegEx)].map((match) => match[1]);
|
|
218
|
+
const functionName = functionNamesFound[0];
|
|
219
|
+
if (!functionName) {
|
|
220
|
+
throw new Error("No function name found in shader code");
|
|
221
|
+
}
|
|
222
|
+
const isMainFunction = functionBody.includes("// main");
|
|
223
|
+
return { functionBody, functionName, isMainFunction };
|
|
224
|
+
}
|
|
225
|
+
/**
|
|
226
|
+
* Removes all function bodies from the shader code, leaving just curly braces behind at the top level
|
|
227
|
+
* @param input - The shader code to process
|
|
228
|
+
* @returns The shader code with all function bodies removed
|
|
229
|
+
*/
|
|
230
|
+
function removeFunctionBodies(input) {
|
|
231
|
+
let output = "";
|
|
232
|
+
let depth = 0;
|
|
233
|
+
for (let pos = 0; pos < input.length; pos++) {
|
|
234
|
+
if (input[pos] === "{") {
|
|
235
|
+
depth++;
|
|
236
|
+
// Special case - if we just hit the first { then include it
|
|
237
|
+
if (depth === 1) {
|
|
238
|
+
output += "{";
|
|
239
|
+
}
|
|
240
|
+
}
|
|
241
|
+
else if (input[pos] === "}") {
|
|
242
|
+
depth--;
|
|
243
|
+
// Special case - if we just hit the last } then include it
|
|
244
|
+
if (depth === 0) {
|
|
245
|
+
output += "}";
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
else if (depth === 0) {
|
|
249
|
+
output += input[pos];
|
|
250
|
+
}
|
|
251
|
+
}
|
|
252
|
+
if (depth !== 0) {
|
|
253
|
+
console.error("Unbalanced curly braces in shader code");
|
|
254
|
+
}
|
|
255
|
+
return output;
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Converts .fragment.glsl and vertex.glsl file pairs into .shader.ts files which export a ShaderProgram object.
|
|
259
|
+
* @param shaderPath - The path to the .glsl files to convert.
|
|
260
|
+
* @param importPath - The path to import the ShaderProgram type from.
|
|
261
|
+
*/
|
|
262
|
+
function convertShaders(shaderPath, importPath) {
|
|
263
|
+
// Get all files in the path
|
|
264
|
+
const allFiles = fs.readdirSync(shaderPath, { withFileTypes: true, recursive: true });
|
|
265
|
+
// Find all fragment shaders (excluding the template)
|
|
266
|
+
const fragmentShaderFiles = allFiles.filter((file) => file.isFile() && file.name.endsWith(".fragment.glsl") && !file.name.endsWith("template.fragment.glsl"));
|
|
267
|
+
// Convert all shaders
|
|
268
|
+
for (const fragmentShaderFile of fragmentShaderFiles) {
|
|
269
|
+
convertShader(path.join(fragmentShaderFile.path, fragmentShaderFile.name), importPath);
|
|
270
|
+
}
|
|
271
|
+
}
|
|
272
|
+
const externalArguments = process.argv.slice(2);
|
|
273
|
+
if (externalArguments.length >= 2 && externalArguments[0] && externalArguments[1]) {
|
|
274
|
+
convertShaders(externalArguments[0], externalArguments[1]);
|
|
275
|
+
}
|
|
276
|
+
// TODO: simple copy from shader file to .ts, get it to build (including import trick)
|
|
277
|
+
//# sourceMappingURL=shaderConverter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shaderConverter.js","sourceRoot":"","sources":["../../../src/utils/buildTools/shaderConverter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionUp.d.ts","sourceRoot":"","sources":["../../../src/utils/buildTools/versionUp.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import * as fs from "fs";
|
|
2
|
+
import { exec } from "child_process";
|
|
3
|
+
import { compareVersions, determineVersion, getNpmVersion } from "./determineVersion.js";
|
|
4
|
+
const alpha = process.argv.includes("--alpha");
|
|
5
|
+
const packageText = fs.readFileSync("package.json");
|
|
6
|
+
const packageJSON = JSON.parse(packageText.toString());
|
|
7
|
+
const packageName = packageJSON.name;
|
|
8
|
+
console.log("Processing package:", packageName);
|
|
9
|
+
console.log("Alpha flag:", alpha);
|
|
10
|
+
console.log("Current package.json version:", packageJSON.version);
|
|
11
|
+
/**
|
|
12
|
+
* Queries the NPM registry for the specified version type
|
|
13
|
+
* @param versionType - The type of version to query
|
|
14
|
+
* @param callback - The callback to call with the NPM version
|
|
15
|
+
*/
|
|
16
|
+
function queryNpmFeed(versionType, callback) {
|
|
17
|
+
exec(`npm view ${packageName} dist-tags.${versionType}`, (err, stdout) => {
|
|
18
|
+
let npmVersion = getNpmVersion(versionType, err, stdout);
|
|
19
|
+
if (npmVersion !== null) {
|
|
20
|
+
npmVersion = npmVersion.trim();
|
|
21
|
+
console.log(`NPM Registry ${versionType} version:`, npmVersion);
|
|
22
|
+
}
|
|
23
|
+
callback(npmVersion);
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
queryNpmFeed("preview", (npmPreviewVersion) => {
|
|
27
|
+
queryNpmFeed("latest", (npmLatestVersion) => {
|
|
28
|
+
let highestNpmVersion = npmLatestVersion;
|
|
29
|
+
if (npmPreviewVersion && (!highestNpmVersion || compareVersions(npmPreviewVersion, highestNpmVersion) === 1)) {
|
|
30
|
+
highestNpmVersion = npmPreviewVersion;
|
|
31
|
+
}
|
|
32
|
+
console.log("Highest NPM Registry version:", highestNpmVersion);
|
|
33
|
+
const versionToUse = determineVersion(highestNpmVersion, packageJSON.version, alpha);
|
|
34
|
+
console.log("Version to use:", versionToUse);
|
|
35
|
+
if (packageJSON.version !== versionToUse) {
|
|
36
|
+
packageJSON.version = versionToUse;
|
|
37
|
+
fs.writeFileSync("package.json", JSON.stringify(packageJSON, null, 4));
|
|
38
|
+
console.log("Version updated in package.json");
|
|
39
|
+
}
|
|
40
|
+
else {
|
|
41
|
+
console.log("No need to update package.json");
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
});
|
|
45
|
+
//# sourceMappingURL=versionUp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionUp.js","sourceRoot":"","sources":["../../../src/utils/buildTools/versionUp.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,EAAE,IAAI,EAAsB,MAAM,eAAe,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,aAAa,EAAoB,MAAM,uBAAuB,CAAC;AAG3G,MAAM,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC/C,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;AACpD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,EAAE,CAAC,CAAC;AAEvD,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC;AACrC,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,WAAW,CAAC,CAAC;AAChD,OAAO,CAAC,GAAG,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AAClC,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;AAElE;;;;GAIG;AACH,SAAS,YAAY,CAAC,WAAwB,EAAE,QAAgD;IAC5F,IAAI,CAAC,YAAY,WAAW,cAAc,WAAW,EAAE,EAAE,CAAC,GAA4B,EAAE,MAAM,EAAE,EAAE;QAC9F,IAAI,UAAU,GAAG,aAAa,CAAC,WAAW,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QACzD,IAAI,UAAU,KAAK,IAAI,EAAE,CAAC;YACtB,UAAU,GAAG,UAAU,CAAC,IAAI,EAAE,CAAC;YAC/B,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,WAAW,EAAE,UAAU,CAAC,CAAC;QACpE,CAAC;QACD,QAAQ,CAAC,UAAU,CAAC,CAAC;IACzB,CAAC,CAAC,CAAC;AACP,CAAC;AAED,YAAY,CAAC,SAAS,EAAE,CAAC,iBAAiB,EAAE,EAAE;IAC1C,YAAY,CAAC,QAAQ,EAAE,CAAC,gBAAgB,EAAE,EAAE;QACxC,IAAI,iBAAiB,GAAqB,gBAAgB,CAAC;QAC3D,IAAI,iBAAiB,IAAI,CAAC,CAAC,iBAAiB,IAAI,eAAe,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3G,iBAAiB,GAAG,iBAAiB,CAAC;QAC1C,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,CAAC;QAEhE,MAAM,YAAY,GAAG,gBAAgB,CAAC,iBAAiB,EAAE,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAErF,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;QAE7C,IAAI,WAAW,CAAC,OAAO,KAAK,YAAY,EAAE,CAAC;YACvC,WAAW,CAAC,OAAO,GAAG,YAAY,CAAC;YACnC,EAAE,CAAC,aAAa,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACvE,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QACnD,CAAC;aAAM,CAAC;YACJ,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;QAClD,CAAC;IACL,CAAC,CAAC,CAAC;AACP,CAAC,CAAC,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { ThinTexture } from "@babylonjs/core/Materials/Textures/thinTexture.js";
|
|
2
2
|
import { type ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
|
|
3
|
+
import type { Nullable } from "@babylonjs/core/types";
|
|
3
4
|
/**
|
|
4
5
|
* Helper that takes in a URL to an image and returns a ThinTexture
|
|
5
6
|
* @param engine - defines the engine to use to create the texture
|
|
@@ -8,7 +9,8 @@ import { type ThinEngine } from "@babylonjs/core/Engines/thinEngine.js";
|
|
|
8
9
|
* * A base64 string of in-line texture data, e.g. 'data:image/jpg;base64,/...'
|
|
9
10
|
* @param flipY - Indicates if the Y axis should be flipped
|
|
10
11
|
* @param samplingMode - The sampling mode to use
|
|
12
|
+
* @param forcedExtension - defines the extension to use to pick the right loader
|
|
11
13
|
* @returns A ThinTexture of the image
|
|
12
14
|
*/
|
|
13
|
-
export declare function createImageTexture(engine: ThinEngine, url: string, flipY?: boolean
|
|
15
|
+
export declare function createImageTexture(engine: ThinEngine, url: string, flipY?: Nullable<boolean>, samplingMode?: number | undefined, forcedExtension?: string | null): ThinTexture;
|
|
14
16
|
//# sourceMappingURL=textureLoaders.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureLoaders.d.ts","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"textureLoaders.d.ts","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAE,KAAK,UAAU,EAAE,MAAM,uCAAuC,CAAC;AACxE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AAEtD;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAC9B,MAAM,EAAE,UAAU,EAClB,GAAG,EAAE,MAAM,EACX,KAAK,GAAE,QAAQ,CAAC,OAAO,CAAQ,EAC/B,YAAY,GAAE,MAAM,GAAG,SAAqB,EAC5C,eAAe,GAAE,MAAM,GAAG,IAAW,GACtC,WAAW,CAeb"}
|
|
@@ -8,10 +8,11 @@ import {} from "@babylonjs/core/Engines/thinEngine.js";
|
|
|
8
8
|
* * A base64 string of in-line texture data, e.g. 'data:image/jpg;base64,/...'
|
|
9
9
|
* @param flipY - Indicates if the Y axis should be flipped
|
|
10
10
|
* @param samplingMode - The sampling mode to use
|
|
11
|
+
* @param forcedExtension - defines the extension to use to pick the right loader
|
|
11
12
|
* @returns A ThinTexture of the image
|
|
12
13
|
*/
|
|
13
|
-
export function createImageTexture(engine, url, flipY =
|
|
14
|
-
const internalTexture = engine.createTexture(url, true, flipY, null, samplingMode);
|
|
14
|
+
export function createImageTexture(engine, url, flipY = null, samplingMode = undefined, forcedExtension = null) {
|
|
15
|
+
const internalTexture = engine.createTexture(url, true, flipY !== null && flipY !== void 0 ? flipY : true, null, samplingMode, null, null, null, null, null, forcedExtension);
|
|
15
16
|
return new ThinTexture(internalTexture);
|
|
16
17
|
}
|
|
17
18
|
/*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"textureLoaders.js","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAmB,MAAM,uCAAuC,CAAC;
|
|
1
|
+
{"version":3,"file":"textureLoaders.js","sourceRoot":"","sources":["../../src/utils/textureLoaders.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mDAAmD,CAAC;AAChF,OAAO,EAAmB,MAAM,uCAAuC,CAAC;AAGxE;;;;;;;;;;GAUG;AACH,MAAM,UAAU,kBAAkB,CAC9B,MAAkB,EAClB,GAAW,EACX,QAA2B,IAAI,EAC/B,eAAmC,SAAS,EAC5C,kBAAiC,IAAI;IAErC,MAAM,eAAe,GAAG,MAAM,CAAC,aAAa,CACxC,GAAG,EACH,IAAI,EACJ,KAAK,aAAL,KAAK,cAAL,KAAK,GAAI,IAAI,EACb,IAAI,EACJ,YAAY,EACZ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,eAAe,CAClB,CAAC;IACF,OAAO,IAAI,WAAW,CAAC,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED;;;;EAIE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Helper class used to generate IDs unique to the current session
|
|
3
|
+
*/
|
|
4
|
+
export declare class UniqueIdGenerator {
|
|
5
|
+
/**
|
|
6
|
+
* The next unique ID to be returned
|
|
7
|
+
*/
|
|
8
|
+
static _NextUniqueId: number;
|
|
9
|
+
/**
|
|
10
|
+
* Gets a unique (relatively to the current session) Id
|
|
11
|
+
*/
|
|
12
|
+
static get UniqueId(): number;
|
|
13
|
+
/**
|
|
14
|
+
* Ensures future generated IDs are greater than the specified value
|
|
15
|
+
* @param minimum - The minimum value that future generated IDs should be greater than
|
|
16
|
+
*/
|
|
17
|
+
static EnsureIdsGreaterThan(minimum: number): void;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=uniqueIdGenerator.d.ts.map
|