@woosh/meep-engine 2.119.12 → 2.119.15
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/README.md +9 -0
- package/build/bundle-worker-terrain.js +1 -1
- package/package.json +1 -1
- package/src/core/collection/array/typed/array_buffer_hash.d.ts +9 -0
- package/src/core/collection/array/typed/array_buffer_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/array_buffer_hash.js +39 -0
- package/src/core/collection/array/typed/uint16_array_hash.d.ts +9 -0
- package/src/core/collection/array/typed/uint16_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/uint16_array_hash.js +29 -0
- package/src/core/collection/array/typed/uint32_array_hash.d.ts +9 -0
- package/src/core/collection/array/typed/uint32_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/uint32_array_hash.js +20 -0
- package/src/core/collection/array/typed/uint8_array_hash.d.ts +9 -0
- package/src/core/collection/array/typed/uint8_array_hash.d.ts.map +1 -0
- package/src/core/collection/array/typed/uint8_array_hash.js +36 -0
- package/src/core/geom/3d/sphere/sphere_project.d.ts +10 -0
- package/src/core/geom/3d/sphere/sphere_project.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_project.js +39 -0
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts +9 -0
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.d.ts.map +1 -0
- package/src/core/geom/3d/sphere/sphere_projected_sphere_radius_sqr.js +45 -0
- package/src/core/geom/Quaternion.d.ts.map +1 -1
- package/src/core/geom/Quaternion.js +8 -17
- package/src/core/graph/layout/box/position_box_next_to_box.d.ts.map +1 -1
- package/src/core/graph/layout/box/position_box_next_to_box.js +0 -23
- package/src/core/parser/simple/readArrayLiteral.d.ts +9 -0
- package/src/core/parser/simple/readArrayLiteral.d.ts.map +1 -0
- package/src/core/parser/simple/readArrayLiteral.js +73 -0
- package/src/core/parser/simple/readLiteralToken.d.ts.map +1 -1
- package/src/core/parser/simple/readLiteralToken.js +1 -53
- package/src/core/parser/simple/skipWhitespace.d.ts +2 -2
- package/src/core/parser/simple/skipWhitespace.d.ts.map +1 -1
- package/src/core/parser/simple/skipWhitespace.js +4 -4
- package/src/engine/ecs/components/Tag.d.ts.map +1 -1
- package/src/engine/ecs/components/Tag.js +0 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.d.ts.map +1 -1
- package/src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js +14 -19
- package/src/engine/ecs/systems/AnimationSystem.d.ts.map +1 -1
- package/src/engine/ecs/systems/AnimationSystem.js +2 -2
- package/src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.d.ts.map +1 -1
- package/src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.js +2 -2
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts +0 -8
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.d.ts.map +1 -1
- package/src/engine/graphics/sh3/lpv/LightProbeVolume.js +0 -32
- package/src/engine/graphics/sh3/lpv/util/lpv_visualise_probes.d.ts +10 -0
- package/src/engine/graphics/sh3/lpv/util/lpv_visualise_probes.d.ts.map +1 -0
- package/src/engine/graphics/sh3/lpv/util/lpv_visualise_probes.js +33 -0
- package/src/engine/graphics/sh3/prototypeSH3Probe.js +3 -2
- package/src/engine/graphics/texture/atlas/AtlasPatch.d.ts.map +1 -1
- package/src/engine/graphics/texture/atlas/AtlasPatch.js +62 -63
- package/src/engine/graphics/texture/sampler/Sampler2D.d.ts.map +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +9 -25
- package/src/engine/graphics/texture/virtual/NOTES.md +11 -2
- package/src/engine/graphics/texture/virtual/VirtualTextureMaterial.d.ts +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureMaterial.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureMaterial.js +1 -12
- package/src/engine/graphics/texture/virtual/VirtualTexturePage.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTexturePage.js +0 -10
- package/src/engine/graphics/texture/virtual/VirtualTextureSystem.d.ts.map +1 -1
- package/src/engine/graphics/texture/virtual/VirtualTextureSystem.js +0 -2
- package/src/engine/graphics/trail/x/RibbonXMaterialSpec.d.ts.map +1 -1
- package/src/engine/graphics/trail/x/RibbonXMaterialSpec.js +6 -7
- package/src/engine/save/GameStateLoader.d.ts.map +1 -1
- package/src/engine/save/GameStateLoader.js +6 -9
- package/src/engine/save/StorageBackedList.d.ts.map +1 -1
- package/src/engine/save/StorageBackedList.js +16 -19
- package/src/generation/grid/generation/GridTaskApplyActionToCells.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskApplyActionToCells.js +12 -16
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskExecuteRuleTimes.js +6 -6
- package/src/generation/grid/generation/GridTaskSequence.d.ts.map +1 -1
- package/src/generation/grid/generation/GridTaskSequence.js +5 -5
- package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.d.ts +2 -6
- package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.d.ts.map +1 -1
- package/src/generation/grid/generation/discrete/GridTaskActionRuleSet.js +1 -1
- package/src/generation/grid/generation/road/RoadConnection.d.ts.map +1 -1
- package/src/generation/grid/generation/road/RoadConnection.js +17 -15
- package/src/engine/graphics/util/projectSphere.d.ts +0 -24
- package/src/engine/graphics/util/projectSphere.d.ts.map +0 -1
- package/src/engine/graphics/util/projectSphere.js +0 -103
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import DataType from "./DataType.js";
|
|
2
|
+
import ParserError from "./ParserError.js";
|
|
3
|
+
import { readLiteralToken } from "./readLiteralToken.js";
|
|
4
|
+
import { skipWhitespace } from "./skipWhitespace.js";
|
|
5
|
+
import Token from "./Token.js";
|
|
6
|
+
|
|
7
|
+
const CHAR_ARRAY_TERMINATOR = ']';
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
*
|
|
11
|
+
* @param {string} text
|
|
12
|
+
* @param {number} cursor
|
|
13
|
+
* @param {number} limit
|
|
14
|
+
* @return {Token}
|
|
15
|
+
*/
|
|
16
|
+
export function readArrayLiteral(text, cursor, limit) {
|
|
17
|
+
let i = cursor;
|
|
18
|
+
|
|
19
|
+
const firstChar = text.charAt(i);
|
|
20
|
+
|
|
21
|
+
if (firstChar !== '[') {
|
|
22
|
+
throw new ParserError(cursor, `expected array start: '[', got '${firstChar}' instead`, text);
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
i = skipWhitespace(text, i + 1, limit);
|
|
26
|
+
|
|
27
|
+
const values = [];
|
|
28
|
+
|
|
29
|
+
// check for empty array
|
|
30
|
+
const char = text.charAt(i);
|
|
31
|
+
|
|
32
|
+
if (char === CHAR_ARRAY_TERMINATOR) {
|
|
33
|
+
|
|
34
|
+
// empty array
|
|
35
|
+
i++;
|
|
36
|
+
|
|
37
|
+
} else {
|
|
38
|
+
|
|
39
|
+
while (i < limit) {
|
|
40
|
+
|
|
41
|
+
i = skipWhitespace(text, i, limit);
|
|
42
|
+
|
|
43
|
+
const token = readLiteralToken(text, i, limit);
|
|
44
|
+
|
|
45
|
+
i = token.end;
|
|
46
|
+
|
|
47
|
+
values.push(token);
|
|
48
|
+
|
|
49
|
+
//try to find separator
|
|
50
|
+
i = skipWhitespace(text, i, limit);
|
|
51
|
+
|
|
52
|
+
if (i < limit) {
|
|
53
|
+
const char = text.charAt(i);
|
|
54
|
+
if (char === ',') {
|
|
55
|
+
//separator
|
|
56
|
+
i++;
|
|
57
|
+
} else if (char === CHAR_ARRAY_TERMINATOR) {
|
|
58
|
+
//end of sequence
|
|
59
|
+
i++;
|
|
60
|
+
break;
|
|
61
|
+
} else {
|
|
62
|
+
//unexpected input
|
|
63
|
+
throw new ParserError(i, `Unexpected input '${char}', expected either separator ',' or end of sequence '${CHAR_ARRAY_TERMINATOR}'`, text);
|
|
64
|
+
}
|
|
65
|
+
} else {
|
|
66
|
+
throw new ParserError(i, `Unterminated array literal`, text);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
return new Token(values, cursor, i, 'array', DataType.Array);
|
|
73
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"readLiteralToken.d.ts","sourceRoot":"","sources":["../../../../../src/core/parser/simple/readLiteralToken.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"readLiteralToken.d.ts","sourceRoot":"","sources":["../../../../../src/core/parser/simple/readLiteralToken.js"],"names":[],"mappings":"AAOA;;;;;;GAMG;AACH,uCALW,MAAM,UACN,MAAM,UACN,MAAM,SAmChB"}
|
|
@@ -1,61 +1,9 @@
|
|
|
1
1
|
import { assert } from "../../assert.js";
|
|
2
|
-
import DataType from "./DataType.js";
|
|
3
2
|
import ParserError from "./ParserError.js";
|
|
3
|
+
import { readArrayLiteral } from "./readArrayLiteral.js";
|
|
4
4
|
import { readBooleanToken } from "./readBooleanToken.js";
|
|
5
5
|
import { readNumberToken } from "./readNumberToken.js";
|
|
6
6
|
import { readStringToken } from "./readStringToken.js";
|
|
7
|
-
import { skipWhitespace } from "./skipWhitespace.js";
|
|
8
|
-
import Token from "./Token.js";
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
*
|
|
12
|
-
* @param {string} text
|
|
13
|
-
* @param {number} cursor
|
|
14
|
-
* @param {number} length
|
|
15
|
-
* @return {Token}
|
|
16
|
-
*/
|
|
17
|
-
function readArrayLiteral(text, cursor, length) {
|
|
18
|
-
let i = cursor;
|
|
19
|
-
|
|
20
|
-
const firstChar = text.charAt(i);
|
|
21
|
-
if (firstChar !== '[') {
|
|
22
|
-
throw new ParserError(cursor, `expected array start: '[', got '${firstChar}' instead`, text);
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
i++;
|
|
26
|
-
|
|
27
|
-
const values = [];
|
|
28
|
-
while (i < length) {
|
|
29
|
-
i = skipWhitespace(text, i, length);
|
|
30
|
-
|
|
31
|
-
const token = readLiteralToken(text, i, length);
|
|
32
|
-
|
|
33
|
-
i = token.end;
|
|
34
|
-
|
|
35
|
-
values.push(token);
|
|
36
|
-
|
|
37
|
-
//try find separator
|
|
38
|
-
i = skipWhitespace(text, i, length);
|
|
39
|
-
if (i < length) {
|
|
40
|
-
const char = text.charAt(i);
|
|
41
|
-
if (char === ',') {
|
|
42
|
-
//separator
|
|
43
|
-
i++;
|
|
44
|
-
} else if (char === ']') {
|
|
45
|
-
//end of sequence
|
|
46
|
-
i++;
|
|
47
|
-
break;
|
|
48
|
-
} else {
|
|
49
|
-
//unexpected input
|
|
50
|
-
throw new ParserError(i, `Unexpected input '${char}', expected either separator ',' or end of sequence ']'`, text);
|
|
51
|
-
}
|
|
52
|
-
} else {
|
|
53
|
-
throw new ParserError(i, `Unterminated array literal`, text);
|
|
54
|
-
}
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
return new Token(values, cursor, i, 'array', DataType.Array);
|
|
58
|
-
}
|
|
59
7
|
|
|
60
8
|
/**
|
|
61
9
|
*
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
*
|
|
3
3
|
* @param {string} text
|
|
4
4
|
* @param {number} cursor
|
|
5
|
-
* @param {number}
|
|
5
|
+
* @param {number} limit
|
|
6
6
|
* @returns {number}
|
|
7
7
|
*/
|
|
8
|
-
export function skipWhitespace(text: string, cursor: number,
|
|
8
|
+
export function skipWhitespace(text: string, cursor: number, limit: number): number;
|
|
9
9
|
//# sourceMappingURL=skipWhitespace.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skipWhitespace.d.ts","sourceRoot":"","sources":["../../../../../src/core/parser/simple/skipWhitespace.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qCALW,MAAM,UACN,MAAM,
|
|
1
|
+
{"version":3,"file":"skipWhitespace.d.ts","sourceRoot":"","sources":["../../../../../src/core/parser/simple/skipWhitespace.js"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,qCALW,MAAM,UACN,MAAM,SACN,MAAM,GACJ,MAAM,CAqBlB"}
|
|
@@ -4,18 +4,18 @@ import { assert } from "../../assert.js";
|
|
|
4
4
|
*
|
|
5
5
|
* @param {string} text
|
|
6
6
|
* @param {number} cursor
|
|
7
|
-
* @param {number}
|
|
7
|
+
* @param {number} limit
|
|
8
8
|
* @returns {number}
|
|
9
9
|
*/
|
|
10
|
-
export function skipWhitespace(text, cursor,
|
|
10
|
+
export function skipWhitespace(text, cursor, limit) {
|
|
11
11
|
assert.isString(text, 'text');
|
|
12
12
|
assert.isNonNegativeInteger(cursor, 'cursor');
|
|
13
|
-
assert.isNonNegativeInteger(
|
|
13
|
+
assert.isNonNegativeInteger(limit, 'limit');
|
|
14
14
|
|
|
15
15
|
let i = cursor;
|
|
16
16
|
let char;
|
|
17
17
|
|
|
18
|
-
while (i <
|
|
18
|
+
while (i < limit) {
|
|
19
19
|
char = text.charAt(i);
|
|
20
20
|
|
|
21
21
|
if (char === ' ' || char === '\n' || char === '\t') {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/components/Tag.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;
|
|
1
|
+
{"version":3,"file":"Tag.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/components/Tag.js"],"names":[],"mappings":"AAIA;;GAEG;AACH;IAoNI;;;;;OAKG;IACH,kBAJW,MAAM,EAAE,gCAEN,MAAM,EAAE,CAsBpB;IAED;;;;OAIG;IACH,oBAHW,MAAM,GACJ,GAAG,CAQf;IAGD;;;;OAIG;IACH,4BAFa,GAAG,CAQf;IAxQD;;;OAGG;IACH,eAAY;IAEZ;;;OAGG;IACH,oBAEC;IAED;;;;OAIG;IACH,OAHW,MAAM,UAOhB;IAED,cAEC;IAED;;;;OAIG;IACH,oBAFa,OAAO,CAYnB;IAED;;;OAGG;IACH,eAFW,MAAM,EAAE,QASlB;IAED;;;OAGG;IACH,mBAEC;IAED;;;;OAIG;IACH,yBAFa,OAAO,CAMnB;IAED;;;OAGG;IACH,oBAFW,MAAM,EAAE,WA4BlB;IAED;;;;OAIG;IACH,sBAHW,QAAQ,GACN,OAAO,CAsBnB;IAED;;;OAGG;IACH,aAFa,MAAM,EAAE,CAIpB;IAED;;;;OAIG;IACH,yBAHoB,MAAM,+BAKzB;IAED;;;OAGG;IACH,QAFY,MAAM,CAmBjB;IAED;;;;OAIG;IACH,cAHW,GAAG,GACF,OAAO,CAIlB;IAED,mBAEC;IAED;;;OAGG;IACH,eAFW,MAAM,EAAE,GAAC,MAAM,QAiBzB;CAwDJ;;kBAIS,MAAM"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DynamicRuleDescriptionTable.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js"],"names":[],"mappings":"AAMA
|
|
1
|
+
{"version":3,"file":"DynamicRuleDescriptionTable.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/ecs/dynamic_actions/rules/DynamicRuleDescriptionTable.js"],"names":[],"mappings":"AAMA;;IAEI;;;;OAIG;IACH,yCAAsC;IAEtC;;;;OAIG;IACH,iCAAyC;IAEzC;;;;OAIG;IACH,oDAFY,sBAAsB,EAAE,GAAC,SAAS,CAI7C;IAED;;;OAGG;IACH,kBAFY,uBAAuB,CAclC;IAED,mBA8BC;IAED;;;;OAIG;IACH,yBAFa,sBAAsB,GAAC,SAAS,CAmC5C;IAED;;;;OAIG;IACH,qBAFa,sBAAsB,EAAE,CAgCpC;IAED,2DAIC;IAED,yCAMC;CAEJ;yCA1KwC,yDAAyD;uCAC3D,6BAA6B;wCAF5B,uEAAuE"}
|
|
@@ -1,29 +1,24 @@
|
|
|
1
|
+
import { HashMap } from "../../../../core/collection/map/HashMap.js";
|
|
2
|
+
import { MultiPredicateEvaluator } from "../../../../core/model/reactive/evaluation/MultiPredicateEvaluator.js";
|
|
1
3
|
import { StaticKnowledgeDataTable } from "../../../knowledge/database/StaticKnowledgeDataTable.js";
|
|
2
4
|
import { DynamicRuleDescription } from "./DynamicRuleDescription.js";
|
|
3
|
-
import { MultiPredicateEvaluator } from "../../../../core/model/reactive/evaluation/MultiPredicateEvaluator.js";
|
|
4
|
-
import { HashMap } from "../../../../core/collection/map/HashMap.js";
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
export class DynamicRuleDescriptionTable extends StaticKnowledgeDataTable {
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
* @type {DynamicRuleDescription[]}
|
|
16
|
-
* @private
|
|
17
|
-
*/
|
|
18
|
-
this.__sorted_by_predicate_complexity = [];
|
|
9
|
+
/**
|
|
10
|
+
* Used to speed up finding most complex matching predicate
|
|
11
|
+
* @type {DynamicRuleDescription[]}
|
|
12
|
+
* @private
|
|
13
|
+
*/
|
|
14
|
+
__sorted_by_predicate_complexity = [];
|
|
19
15
|
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
}
|
|
16
|
+
/**
|
|
17
|
+
*
|
|
18
|
+
* @type {HashMap<ReactiveExpression, DynamicRuleDescription[]>}
|
|
19
|
+
* @private
|
|
20
|
+
*/
|
|
21
|
+
__predicate_rule_mapping = new HashMap();
|
|
27
22
|
|
|
28
23
|
/**
|
|
29
24
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/systems/AnimationSystem.js"],"names":[],"mappings":"AAwJA;;;;GAIG;AACH,wCAHW,mBAAmB,aACnB,MAAM,QAehB;;sDArKM,OAAO;AA4Kd;IACI;;;;OAIG;IACH,mCAMC;IAHG,iDAAqC;IAErC,sBAAgC;IAGpC;;;;;OAKG;IACH,gBAJW,SAAS,gCAkBnB;IAED;;;;;OAKG;IACH,kBAJW,SAAS,gCAanB;CAsJJ;uBAtWsB,cAAc;
|
|
1
|
+
{"version":3,"file":"AnimationSystem.d.ts","sourceRoot":"","sources":["../../../../../src/engine/ecs/systems/AnimationSystem.js"],"names":[],"mappings":"AAwJA;;;;GAIG;AACH,wCAHW,mBAAmB,aACnB,MAAM,QAehB;;sDArKM,OAAO;AA4Kd;IACI;;;;OAIG;IACH,mCAMC;IAHG,iDAAqC;IAErC,sBAAgC;IAGpC;;;;;OAKG;IACH,gBAJW,SAAS,gCAkBnB;IAED;;;;;OAKG;IACH,kBAJW,SAAS,gCAanB;CAsJJ;uBAtWsB,cAAc;iBAPpB,iCAAiC;0BAIxB,2BAA2B"}
|
|
@@ -5,6 +5,7 @@ import {
|
|
|
5
5
|
Matrix4 as ThreeMatrix4
|
|
6
6
|
} from 'three';
|
|
7
7
|
import { assert } from "../../../core/assert.js";
|
|
8
|
+
import { sphere_project } from "../../../core/geom/3d/sphere/sphere_project.js";
|
|
8
9
|
import Vector4 from "../../../core/geom/Vector4.js";
|
|
9
10
|
import { max3 } from "../../../core/math/max3.js";
|
|
10
11
|
import Future, { FutureStates } from '../../../core/process/Future.js';
|
|
@@ -13,7 +14,6 @@ import { CameraSystem } from '../../graphics/ecs/camera/CameraSystem.js';
|
|
|
13
14
|
import Mesh from '../../graphics/ecs/mesh/Mesh.js';
|
|
14
15
|
import { MeshEvents } from "../../graphics/ecs/mesh/MeshEvents.js";
|
|
15
16
|
import { MeshSystem } from "../../graphics/ecs/mesh/MeshSystem.js";
|
|
16
|
-
import { projectSphere } from "../../graphics/util/projectSphere.js";
|
|
17
17
|
import { threeUpdateTransform } from "../../graphics/util/threeUpdateTransform.js";
|
|
18
18
|
import { Animation } from '../animation/Animation.js';
|
|
19
19
|
import { AnimationClipFlag } from "../animation/AnimationClipFlag.js";
|
|
@@ -286,7 +286,7 @@ class AnimationSystem extends System {
|
|
|
286
286
|
v4boundingSphere.multiplyScalar(scaleMax);
|
|
287
287
|
v4boundingSphere.add3(position);
|
|
288
288
|
|
|
289
|
-
const area =
|
|
289
|
+
const area = sphere_project(v4boundingSphere, cameraMatrix, focalLength);
|
|
290
290
|
const inPixels = area * viewportSize.x * viewportSize.y;
|
|
291
291
|
return inPixels;
|
|
292
292
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnimationGraphSystem.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.js"],"names":[],"mappings":"AAoBA;IACI;;;OAGG;IACH,mCA2CC;IAxCG,sDAA0C;IAE1C,4DAEC;IAED;;;;OAIG;IACH,oBAAoB;IAEpB;;;;OAIG;IACH,uCAAuC;IAEvC;;;;OAIG;IACH,sBAAsB;IAEtB;;;;OAIG;IACH,uBAAkC;IAElC;;;;OAIG;IACH,2BAAuC;IAG3C;;;;OAIG;IACH,2BAmBC;IAED;;;;;OAKG;IACH,YAJW,cAAc,QACd,IAAI,UACJ,MAAM,QAahB;IAED;;;;;OAKG;IACH,cAJW,cAAc,QACd,IAAI,UACJ,MAAM,QAQhB;IAED;;;;OAIG;IACH,wBAHW,cAAc,UACd,MAAM,QAIhB;IAED;;;;OAIG;IACH,uBAHW,IAAI,UACJ,MAAM,WA+BhB;IAED;;;;;OAKG;IACH,+BAJW,MAAM,SACN,cAAc,iBACd,IAAI,WAkCd;IAGD;;;;OAIG;IACH,sBAHW,IAAI,gBACJ,OAAO,UAsCjB;IAGD,6BAqDC;CACJ;
|
|
1
|
+
{"version":3,"file":"AnimationGraphSystem.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/ecs/animation/animator/AnimationGraphSystem.js"],"names":[],"mappings":"AAoBA;IACI;;;OAGG;IACH,mCA2CC;IAxCG,sDAA0C;IAE1C,4DAEC;IAED;;;;OAIG;IACH,oBAAoB;IAEpB;;;;OAIG;IACH,uCAAuC;IAEvC;;;;OAIG;IACH,sBAAsB;IAEtB;;;;OAIG;IACH,uBAAkC;IAElC;;;;OAIG;IACH,2BAAuC;IAG3C;;;;OAIG;IACH,2BAmBC;IAED;;;;;OAKG;IACH,YAJW,cAAc,QACd,IAAI,UACJ,MAAM,QAahB;IAED;;;;;OAKG;IACH,cAJW,cAAc,QACd,IAAI,UACJ,MAAM,QAQhB;IAED;;;;OAIG;IACH,wBAHW,cAAc,UACd,MAAM,QAIhB;IAED;;;;OAIG;IACH,uBAHW,IAAI,UACJ,MAAM,WA+BhB;IAED;;;;;OAKG;IACH,+BAJW,MAAM,SACN,cAAc,iBACd,IAAI,WAkCd;IAGD;;;;OAIG;IACH,sBAHW,IAAI,gBACJ,OAAO,UAsCjB;IAGD,6BAqDC;CACJ;uBAlTsB,2BAA2B;iBAElB,oBAAoB;+BAGrB,2BAA2B;4CANd,0DAA0D;wBAN9E,OAAO"}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { Matrix4 } from "three";
|
|
2
2
|
import { assert } from "../../../../../core/assert.js";
|
|
3
|
+
import { sphere_project } from "../../../../../core/geom/3d/sphere/sphere_project.js";
|
|
3
4
|
import Vector4 from "../../../../../core/geom/Vector4.js";
|
|
4
5
|
import { max3 } from "../../../../../core/math/max3.js";
|
|
5
6
|
import { ResourceAccessKind } from "../../../../../core/model/ResourceAccessKind.js";
|
|
6
7
|
import { ResourceAccessSpecification } from "../../../../../core/model/ResourceAccessSpecification.js";
|
|
7
8
|
import { System } from "../../../../ecs/System.js";
|
|
8
|
-
import { projectSphere } from "../../../util/projectSphere.js";
|
|
9
9
|
import { CameraSystem } from "../../camera/CameraSystem.js";
|
|
10
10
|
import Mesh, { MeshFlags } from "../../mesh/Mesh.js";
|
|
11
11
|
import { MeshEvents } from "../../mesh/MeshEvents.js";
|
|
@@ -240,7 +240,7 @@ export class AnimationGraphSystem extends System {
|
|
|
240
240
|
v4boundingSphere.multiplyScalar(scaleMax);
|
|
241
241
|
v4boundingSphere.add3(position);
|
|
242
242
|
|
|
243
|
-
const area =
|
|
243
|
+
const area = sphere_project(v4boundingSphere, cameraMatrix, this.__focalLength);
|
|
244
244
|
|
|
245
245
|
/**
|
|
246
246
|
*
|
|
@@ -42,16 +42,8 @@ export class LightProbeVolume {
|
|
|
42
42
|
* Build tetrahedral mesh
|
|
43
43
|
*/
|
|
44
44
|
build_mesh(): void;
|
|
45
|
-
/**
|
|
46
|
-
*
|
|
47
|
-
* @param {number} size
|
|
48
|
-
* @param {boolean} shadow
|
|
49
|
-
* @returns {EntityNode}
|
|
50
|
-
*/
|
|
51
|
-
visualize_probes({ size, shadow }: number): EntityNode;
|
|
52
45
|
incrementVersion(): void;
|
|
53
46
|
#private;
|
|
54
47
|
}
|
|
55
48
|
import { TetrahedralMesh } from "../../../../core/geom/3d/tetrahedra/TetrahedralMesh.js";
|
|
56
|
-
import { EntityNode } from "../../../ecs/parent/EntityNode.js";
|
|
57
49
|
//# sourceMappingURL=LightProbeVolume.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"LightProbeVolume.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/sh3/lpv/LightProbeVolume.js"],"names":[],"mappings":"AAUA;;;GAGG;AACH;IAiCI,sBAEC;IAED,cAkBC;IAED;;;OAGG;IACH,4BAEC;IAED,uBAEC;IAED,0BAEC;IAMD;;;OAGG;IACH,sCAIC;IAZD,mCAEC;IAYD,sBAEC;IAMD,uBAEC;IAND,oBAEC;IAMD;;;;;OAKG;IACH,aAJW,MAAM,KACN,MAAM,KACN,MAAM,QAgBhB;IAED;;;;OAIG;IACH,sCAFW,UAAQ;QAAC,CAAC,EAAC,MAAM,CAAC;QAAC,CAAC,EAAC,MAAM,CAAC;QAAC,CAAC,EAAC,MAAM,CAAA;KAAC,QAOhD;IAED;;OAEG;IACH,mBAaC;IAGD,yBAEC;;CAEJ;gCAnK+B,wDAAwD"}
|
|
@@ -6,9 +6,6 @@ import {
|
|
|
6
6
|
tetrahedral_mesh_build_from_grid
|
|
7
7
|
} from "../../../../core/geom/3d/tetrahedra/delaunay/grid/tetrahedral_mesh_build_from_grid.js";
|
|
8
8
|
import { TetrahedralMesh } from "../../../../core/geom/3d/tetrahedra/TetrahedralMesh.js";
|
|
9
|
-
import { EntityNode } from "../../../ecs/parent/EntityNode.js";
|
|
10
|
-
import { Transform } from "../../../ecs/transform/Transform.js";
|
|
11
|
-
import { sh3_make_shaded_geometry } from "../visualise_spherical_harmonic_sphere.js";
|
|
12
9
|
|
|
13
10
|
|
|
14
11
|
/**
|
|
@@ -167,35 +164,6 @@ export class LightProbeVolume {
|
|
|
167
164
|
}
|
|
168
165
|
|
|
169
166
|
|
|
170
|
-
/**
|
|
171
|
-
*
|
|
172
|
-
* @param {number} size
|
|
173
|
-
* @param {boolean} shadow
|
|
174
|
-
* @returns {EntityNode}
|
|
175
|
-
*/
|
|
176
|
-
visualize_probes({ size = 0.2, shadow = false }) {
|
|
177
|
-
const parent = new EntityNode();
|
|
178
|
-
parent.entity.add(new Transform());
|
|
179
|
-
|
|
180
|
-
for (let i = 0; i < this.#probe_count; i++) {
|
|
181
|
-
const probe_node = new EntityNode();
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
probe_node.entity.add(new Transform());
|
|
185
|
-
probe_node.entity.add(
|
|
186
|
-
sh3_make_shaded_geometry(this.#sh3_rgb, i * 3 * 9, shadow)
|
|
187
|
-
);
|
|
188
|
-
|
|
189
|
-
probe_node.transform.position.fromArray(this.#probe_positions, i * 3);
|
|
190
|
-
probe_node.transform.scale.setScalar(size);
|
|
191
|
-
|
|
192
|
-
parent.addChild(probe_node);
|
|
193
|
-
}
|
|
194
|
-
|
|
195
|
-
return parent;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
|
|
199
167
|
incrementVersion() {
|
|
200
168
|
this.#version++;
|
|
201
169
|
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
*
|
|
3
|
+
* @param {LightProbeVolume} volume
|
|
4
|
+
* @param {number} size
|
|
5
|
+
* @param {boolean} shadow
|
|
6
|
+
* @returns {EntityNode}
|
|
7
|
+
*/
|
|
8
|
+
export function lpv_visualize_probes({ volume, size, shadow }: LightProbeVolume): EntityNode;
|
|
9
|
+
import { EntityNode } from "../../../../ecs/parent/EntityNode.js";
|
|
10
|
+
//# sourceMappingURL=lpv_visualise_probes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"lpv_visualise_probes.d.ts","sourceRoot":"","sources":["../../../../../../../src/engine/graphics/sh3/lpv/util/lpv_visualise_probes.js"],"names":[],"mappings":"AAIA;;;;;;GAMG;AACH,kFAFa,UAAU,CAuBtB;2BAhC0B,sCAAsC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { EntityNode } from "../../../../ecs/parent/EntityNode.js";
|
|
2
|
+
import { Transform } from "../../../../ecs/transform/Transform.js";
|
|
3
|
+
import { sh3_make_shaded_geometry } from "../../visualise_spherical_harmonic_sphere.js";
|
|
4
|
+
|
|
5
|
+
/**
|
|
6
|
+
*
|
|
7
|
+
* @param {LightProbeVolume} volume
|
|
8
|
+
* @param {number} size
|
|
9
|
+
* @param {boolean} shadow
|
|
10
|
+
* @returns {EntityNode}
|
|
11
|
+
*/
|
|
12
|
+
export function lpv_visualize_probes({ volume, size = 0.2, shadow = false }) {
|
|
13
|
+
const parent = new EntityNode();
|
|
14
|
+
parent.entity.add(new Transform());
|
|
15
|
+
|
|
16
|
+
const count = volume.count;
|
|
17
|
+
for (let i = 0; i < count; i++) {
|
|
18
|
+
const probe_node = new EntityNode();
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
probe_node.entity.add(new Transform());
|
|
22
|
+
probe_node.entity.add(
|
|
23
|
+
sh3_make_shaded_geometry(volume.harmonics, i * 3 * 9, shadow)
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
probe_node.transform.position.fromArray(volume.points, i * 3);
|
|
27
|
+
probe_node.transform.scale.setScalar(size);
|
|
28
|
+
|
|
29
|
+
parent.addChild(probe_node);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
return parent;
|
|
33
|
+
}
|
|
@@ -58,6 +58,7 @@ import { OctahedralDepthDebuggerWidget } from "./lpv/depth/octahedral/Octahedral
|
|
|
58
58
|
import { VLPDepthMapVisualisation } from "./lpv/depth/octahedral/v2/VLPDepthMapVisualisation.js";
|
|
59
59
|
import { LightProbeVolume } from "./lpv/LightProbeVolume.js";
|
|
60
60
|
import { LightProbeVolumeSerializationAdapter } from "./lpv/serialization/LightProbeVolumeSerializationAdapter.js";
|
|
61
|
+
import { lpv_visualize_probes } from "./lpv/util/lpv_visualise_probes.js";
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
*
|
|
@@ -420,7 +421,7 @@ async function main(engine) {
|
|
|
420
421
|
sg.writeFlag(ShadedGeometryFlags.CastShadow | ShadedGeometryFlags.ReceiveShadow, true);
|
|
421
422
|
|
|
422
423
|
const material = sg.material;
|
|
423
|
-
if(material !== null){
|
|
424
|
+
if (material !== null) {
|
|
424
425
|
material.depthTest = true;
|
|
425
426
|
material.depthWrite = true;
|
|
426
427
|
}
|
|
@@ -503,7 +504,7 @@ async function main(engine) {
|
|
|
503
504
|
transformer.update();
|
|
504
505
|
|
|
505
506
|
|
|
506
|
-
const probe_viz =
|
|
507
|
+
const probe_viz = lpv_visualize_probes({ volume, size: model_footprint * 0.002 });
|
|
507
508
|
// probe_viz.build(ecd);
|
|
508
509
|
|
|
509
510
|
const mesh_viz = visualize_tetrahedral_mesh({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AtlasPatch.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/AtlasPatch.js"],"names":[],"mappings":"AAIA;
|
|
1
|
+
{"version":3,"file":"AtlasPatch.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/atlas/AtlasPatch.js"],"names":[],"mappings":"AAIA;IAEI;;;;OAIG;IACH,mBAFU,OAAO,CAEY;IAE7B;;;;OAIG;IACH,eAFU,OAAO,CAEQ;IAEzB;;;OAGG;IACH,SAFU,MAAM,CAEJ;IAEZ;;;OAGG;IACH,IAFU,MAAM,CAER;IAER;;;OAGG;IACH,SAFU,YAAU,IAAI,CAET;IAEf;;;OAGG;IACH,aAFU,SAAS,CAEY;IAE/B;;;;;;OAMG;IACH,kBAFU,KAAK,CAEO;IAEtB;;;OAGG;IACH,OAFU,MAAM,iBAAe,CAErB;IAEV;;;;OAIG;IACH,sBAFU,MAAM,CAEU;IAE1B;;;;OAIG;IACH,sBAHW,MAAM,gBACN,MAAM,QAqBhB;IAED;;;;OAIG;IACH,uCAHW,MAAM,gBACN,MAAM,QAYhB;IAED;;;;OAIG;IACH,cAHW,MAAM,iBAAe,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,iBAAe,GACnB,IAAI,CAIhB;IAED;;;;OAIG;IACH,gBAHW,MAAM,iBAAe,SACrB,OAAO,QAQjB;IAED;;;;OAIG;IACH,cAHW,MAAM,iBAAe,GACnB,OAAO,CAInB;IAGL;;;OAGG;IACH,uBAFU,OAAO,CAEgB;CANhC;oBAlJmB,kCAAkC;sBADhC,uCAAuC;kBAD3C,wCAAwC"}
|
|
@@ -1,69 +1,68 @@
|
|
|
1
|
-
import Vector2 from "../../../../core/geom/Vector2.js";
|
|
2
|
-
import Rectangle from "../../../../core/geom/2d/Rectangle.js";
|
|
3
1
|
import AABB2 from "../../../../core/geom/2d/aabb/AABB2.js";
|
|
2
|
+
import Rectangle from "../../../../core/geom/2d/Rectangle.js";
|
|
3
|
+
import Vector2 from "../../../../core/geom/Vector2.js";
|
|
4
4
|
|
|
5
5
|
export class AtlasPatch {
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* Position in the atlas where the raw patch data is found, excludes padding
|
|
9
|
+
* @readonly
|
|
10
|
+
* @type {Vector2}
|
|
11
|
+
*/
|
|
12
|
+
position = new Vector2(0, 0);
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* Size in pixels of the patch, excludes padding
|
|
16
|
+
* @readonly
|
|
17
|
+
* @type {Vector2}
|
|
18
|
+
*/
|
|
19
|
+
size = new Vector2(0, 0);
|
|
20
|
+
|
|
21
|
+
/**
|
|
22
|
+
* Number of pixels to add to patch size to avoid sampling error at the edges
|
|
23
|
+
* @type {number}
|
|
24
|
+
*/
|
|
25
|
+
padding = 4;
|
|
26
|
+
|
|
27
|
+
/**
|
|
28
|
+
* Managed by TextureAtlas
|
|
29
|
+
* @type {number}
|
|
30
|
+
*/
|
|
31
|
+
id = -1;
|
|
32
|
+
|
|
33
|
+
/**
|
|
34
|
+
* Texture data of the patch, this is what will be stenciled into the atlas
|
|
35
|
+
* @type {Sampler2D|null}
|
|
36
|
+
*/
|
|
37
|
+
sampler = null;
|
|
38
|
+
|
|
39
|
+
/**
|
|
40
|
+
* @readonly
|
|
41
|
+
* @type {Rectangle}
|
|
42
|
+
*/
|
|
43
|
+
uv = new Rectangle(0, 0, 0, 0);
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Area in the atlas where patch along with the padding is packed into.
|
|
47
|
+
* Used for packing inside TextureAtlas.
|
|
48
|
+
* Do not modify manually
|
|
49
|
+
* @readonly
|
|
50
|
+
* @type {AABB2}
|
|
51
|
+
*/
|
|
52
|
+
packing = new AABB2();
|
|
53
|
+
|
|
54
|
+
/**
|
|
55
|
+
* bitfield
|
|
56
|
+
* @type {number|AtlasPatchFlag}
|
|
57
|
+
*/
|
|
58
|
+
flags = 0;
|
|
59
|
+
|
|
60
|
+
/**
|
|
61
|
+
* Version of associated sampler that was last written.
|
|
62
|
+
* Used to track and signal when sampler needs to be re-painted.
|
|
63
|
+
* @type {number}
|
|
64
|
+
*/
|
|
65
|
+
last_painted_version = -1;
|
|
67
66
|
|
|
68
67
|
/**
|
|
69
68
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Sampler2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/Sampler2D.js"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"Sampler2D.d.ts","sourceRoot":"","sources":["../../../../../../src/engine/graphics/texture/sampler/Sampler2D.js"],"names":[],"mappings":"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"}
|