@woosh/meep-engine 2.50.3 → 2.52.0
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/editor/actions/concrete/WriteGridValueAction.js +13 -18
- package/editor/ecs/component/editors/Sampler2DEditor.js +2 -2
- package/editor/process/SymbolicDisplayProcess.js +1 -1
- package/editor/process/symbolic/buildThreeJSHelperEntity.js +1 -1
- package/editor/process/symbolic/makeCameraSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makeGridPositionSymbolDisplay.js +1 -1
- package/editor/process/symbolic/makeLightSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makePathSymbolicDisplay.js +1 -1
- package/editor/process/symbolic/makePositionedIconDisplaySymbol.js +1 -1
- package/editor/view/ecs/components/GridObstacleController.js +2 -2
- package/editor/view/ecs/components/TerrainController.js +2 -2
- package/package.json +1 -1
- package/samples/terrain/editor.js +2 -2
- package/src/core/NumberFormat.js +0 -71
- package/src/core/UUID.spec.js +8 -0
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.d.ts +4 -0
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.js +58 -55
- package/src/core/bvh2/bvh3/ExplicitBinaryBoundingVolumeHierarchy.spec.js +54 -0
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.js +3 -3
- package/src/core/bvh2/bvh3/ebvh_build_for_geometry_morton.spec.js +60 -0
- package/src/core/bvh2/bvh3/query/BVHQueryAny.js +16 -0
- package/src/core/bvh2/bvh3/query/bvh_collect_user_data.js +5 -5
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.js +2 -3
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_generic.spec.js +22 -0
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.js +2 -2
- package/src/core/bvh2/bvh3/query/bvh_query_leaves_ray.spec.js +64 -0
- package/src/core/bvh2/bvh3/query/bvh_query_user_data_generic.js +2 -3
- package/src/core/bvh2/visual/convert_bvh_to_dot_format_string.js +2 -2
- package/src/core/cache/Cache.js +3 -5
- package/src/core/cache/CacheElement.js +1 -0
- package/src/core/geom/2d/quad-tree/PointQuadTree.js +10 -0
- package/src/core/geom/3d/aabb/aabb3_array_combine.js +3 -3
- package/src/core/geom/3d/aabb/aabb3_from_threejs_geometry.js +41 -0
- package/src/core/geom/3d/topology/struct/TopoMesh.js +3 -2
- package/src/core/geom/3d/topology/struct/prototypeBinaryTopology.js +4 -4
- package/src/core/geom/Vector2.d.ts +9 -0
- package/src/core/geom/Vector2.js +8 -22
- package/src/core/geom/Vector2.spec.js +153 -0
- package/src/core/graph/{convertGraphToDotString.js → convert_graph_to_dot_string.js} +1 -1
- package/src/core/graph/convert_graph_to_dot_string.spec.js +28 -0
- package/src/core/math/noise/sdnoise.js +5 -7
- package/src/core/math/noise/sdnoise.spec.js +87 -0
- package/src/core/model/ModuleRegistry.js +2 -4
- package/src/core/model/ModuleRegistry.spec.js +31 -0
- package/src/core/model/reactive/js/compileReactiveToJS.spec.js +14 -0
- package/src/core/model/reactive/model/logic/ReactiveAnd.spec.js +31 -1
- package/src/core/model/reactive/model/logic/ReactiveOr.spec.js +53 -0
- package/src/core/model/stat/LinearModifier.js +2 -2
- package/src/core/model/stat/LinearModifier.spec.js +62 -0
- package/src/core/model/stat/Stat.js +12 -0
- package/src/core/model/stat/Stat.spec.js +36 -0
- package/src/core/primitives/array/computeStridedIntegerArrayHash.spec.js +28 -0
- package/src/core/primitives/numbers/number_format_by_thousands.js +14 -0
- package/src/core/primitives/numbers/number_pretty_print.js +49 -0
- package/src/core/primitives/strings/computeStringHash.spec.js +12 -5
- package/src/core/process/BaseProcess.js +8 -8
- package/src/engine/Clock.js +30 -29
- package/src/engine/Clock.spec.js +26 -0
- package/src/engine/{Platform.js → browserInfo.js} +1 -5
- package/src/engine/ecs/EntityBuilder.js +3 -1
- package/src/engine/ecs/EntityBuilder.spec.js +21 -0
- package/src/engine/ecs/fow/FogOfWar.js +48 -54
- package/src/engine/ecs/gui/GUIElement.js +1 -1
- package/src/engine/ecs/gui/position/ViewportPosition.js +3 -3
- package/src/engine/ecs/{systems → renderable}/RenderSystem.d.ts +1 -1
- package/src/engine/ecs/{systems → renderable}/RenderSystem.js +10 -38
- package/src/engine/ecs/renderable/Renderable.d.ts +25 -0
- package/src/engine/ecs/{components → renderable}/Renderable.js +18 -83
- package/src/engine/ecs/renderable/Renderable.spec.js +10 -0
- package/src/engine/ecs/speaker/VoiceSystem.js +15 -9
- package/src/engine/ecs/terrain/ecs/TerrainClassifier.js +1 -1
- package/src/engine/ecs/terrain/ecs/layers/TerrainLayers.js +3 -3
- package/src/engine/ecs/terrain/ecs/splat/SplatMapOptimizerDebugger.js +3 -3
- package/src/engine/ecs/terrain/ecs/splat/SplatMapping.js +2 -2
- package/src/engine/ecs/terrain/overlay/TerrainOverlay.js +2 -2
- package/src/engine/ecs/terrain/util/paintTerrainOverlayViaLookupTable.js +2 -2
- package/src/engine/ecs/transform/Transform.js +1 -0
- package/src/engine/graphics/camera/testClippingPlaneComputation.js +0 -4
- package/src/engine/graphics/copy_transform_to_threejs_object.js +12 -0
- package/src/engine/graphics/debug/VisualSymbolLine.js +1 -1
- package/src/engine/graphics/ecs/animation/animator/graph/AnimationGraph.spec.js +5 -0
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.js +24 -25
- package/src/engine/graphics/ecs/animation/animator/graph/definition/AnimationGraphDefinition.spec.js +5 -0
- package/src/engine/graphics/ecs/decal/DecalSystem.js +3 -21
- package/src/engine/graphics/ecs/decal/v2/Decal.js +32 -32
- package/src/engine/graphics/ecs/decal/v2/Decal.spec.js +5 -0
- package/src/engine/graphics/ecs/decal/v2/FPDecalSystem.js +4 -2
- package/src/engine/graphics/ecs/highlight/renderer/makeGaussianBlurShader.js +1 -4
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.d.ts +1 -1
- package/src/engine/graphics/ecs/highlight/system/RenderableHighlightSystem.js +2 -2
- package/src/engine/graphics/ecs/mesh/applyTransformToThreeObject.js +2 -5
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometry.js +4 -33
- package/src/engine/graphics/ecs/mesh-v2/ShadedGeometrySystem.js +8 -4
- package/src/engine/graphics/ecs/mesh-v2/aggregate/SGMesh.spec.js +5 -0
- package/src/engine/graphics/ecs/mesh-v2/sample/prototypeShadedGeometry.js +0 -12
- package/src/engine/graphics/ecs/path/ribbon/RibbonPathBuilder.js +2 -2
- package/src/engine/graphics/ecs/path/testPathDisplaySystem.js +0 -2
- package/src/engine/graphics/ecs/path/tube/prototypeAnimatedPathMask.js +0 -4
- package/src/engine/graphics/ecs/water2/shader/testWaterShader.js +0 -2
- package/src/engine/graphics/geometry/buffered/computeBufferAttributeHash.js +1 -1
- package/src/engine/graphics/geometry/optimization/merge/prototypeGeometryMerge.js +1 -1
- package/src/engine/graphics/particles/particular/engine/utils/volume/prototypeParticleVolume.js +1 -3
- package/src/engine/graphics/render/buffer/buffers/prototypeNormalFrameBuffer.js +0 -4
- package/src/engine/graphics/render/forward_plus/plugin/ptototypeFPPlugin.js +1 -5
- package/src/engine/graphics/render/forward_plus/prototype/prototypeLightManager.js +2 -2
- package/src/engine/graphics/render/visibility/hiz/prototypeHiZ.js +2 -6
- package/src/engine/graphics/sh3/path_tracer/GeometryBVHBatched.js +2 -1
- package/src/engine/graphics/sh3/path_tracer/PathTracer.js +6 -1
- package/src/engine/graphics/sh3/path_tracer/prototypePathTracer.js +4 -4
- package/src/engine/graphics/shaders/SoftOutlineShader.js +2 -4
- package/src/engine/graphics/shadows/testShadowMapRendering.js +0 -2
- package/src/engine/graphics/texture/atlas/CachingTextureAtlas.spec.js +24 -0
- package/src/engine/graphics/texture/atlas/TextureAtlas.spec.js +46 -0
- package/src/engine/graphics/texture/sampler/SampleTraverser.js +1 -1
- package/src/engine/graphics/texture/sampler/Sampler2D.js +1 -1
- package/src/engine/graphics/texture/sampler/bicubic.spec.js +13 -0
- package/src/engine/graphics/texture/sampler/differenceSampler.js +1 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.js +5 -1
- package/src/engine/graphics/texture/sampler/distance/computeSignedDistanceField_NaiveFlood.spec.js +183 -0
- package/src/engine/graphics/texture/sampler/filter/filter_lanczos3.js +20 -0
- package/src/engine/graphics/texture/sampler/filter/mitchell.js +0 -21
- package/src/engine/graphics/texture/sampler/filter/mitchell_v1.js +21 -0
- package/src/engine/graphics/texture/sampler/filter/sampler2d_scale_down_generic.js +17 -16
- package/src/engine/graphics/texture/sampler/prototypeSamplerFiltering.js +11 -9
- package/src/engine/graphics/texture/sampler/{scaleSampler2D.js → resize/sampler2d_scale.js} +8 -8
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale.spec.js +73 -0
- package/src/engine/graphics/texture/sampler/{sampler2_d_scale_down_lanczos.js → resize/sampler2d_scale_down_lanczos.js} +3 -24
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_lanczos.spec.js +29 -0
- package/src/engine/graphics/texture/sampler/{sampler2d_scale_down_linear.js → resize/sampler2d_scale_down_linear.js} +5 -5
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_down_linear.spec.js +44 -0
- package/src/engine/graphics/texture/sampler/resize/{sampler2d_downsample_mipmap.js → sampler2d_scale_down_mipmap.js} +2 -2
- package/src/engine/graphics/texture/sampler/resize/{sampler2d_downsample_mipmap.spec.js → sampler2d_scale_down_mipmap.spec.js} +2 -2
- package/src/engine/graphics/texture/sampler/{genericResampleSampler2D.js → resize/sampler2d_scale_generic.js} +16 -12
- package/src/engine/graphics/texture/sampler/{upsampleSampler2D.js → resize/sampler2d_scale_up_linear.js} +5 -2
- package/src/engine/graphics/texture/sampler/resize/sampler2d_scale_up_linear.spec.js +14 -0
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min_indices.js +4 -2
- package/src/engine/graphics/texture/sampler/sampler2d_channel_compute_min_indices.spec.js +15 -0
- package/src/engine/graphics/texture/sampler/util/drawSamplerHTML.js +2 -2
- package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.js +46 -0
- package/src/engine/graphics/three/expand_aabb_by_transformed_three_object.spec.js +108 -0
- package/src/engine/graphics/trail/TemporalPath.js +83 -78
- package/src/engine/graphics/trail/TemporalPath.spec.js +5 -0
- package/src/engine/graphics/trail/x/RibbonX.spec.js +5 -0
- package/src/engine/grid/components/GridObstacle.js +45 -25
- package/src/engine/grid/components/GridObstacle.spec.js +130 -1
- package/src/engine/grid/components/GridPosition.js +5 -17
- package/src/engine/grid/components/GridPosition2Transform.js +1 -70
- package/src/engine/grid/components/GridPosition2TransformSerializationAdapter.js +70 -0
- package/src/engine/input/devices/InputDeviceSwitch.spec.js +5 -0
- package/src/engine/input/ecs/{InputBinding.js → components/InputBinding.js} +1 -1
- package/src/engine/input/ecs/components/InputController.js +2 -2
- package/src/engine/input/ecs/ism/InputBinding.js +2 -2
- package/src/engine/input/ecs/util/TerrainCameraTargetSampler.js +1 -1
- package/src/engine/input/ecs/util/TopDownCameraControllerHelper.js +1 -1
- package/src/engine/intelligence/behavior/behavior_to_dot.spec.js +25 -0
- package/src/engine/intelligence/behavior/util/DelayBehavior.js +6 -4
- package/src/engine/intelligence/blackboard/Blackboard.d.ts +2 -0
- package/src/engine/intelligence/blackboard/Blackboard.js +36 -2
- package/src/engine/intelligence/blackboard/Blackboard.spec.js +49 -0
- package/src/engine/intelligence/blackboard/BlackboardSerializationAdapter.spec.js +2 -0
- package/src/engine/navigation/grid/{AStar.js → find_path_on_grid_astar.js} +21 -18
- package/src/engine/navigation/grid/find_path_on_grid_astar.spec.js +7 -0
- package/src/engine/plugin/EnginePlugin.js +12 -14
- package/src/engine/plugin/EnginePlugin.spec.js +5 -0
- package/src/engine/plugin/EnginePluginManager.js +18 -22
- package/src/engine/scene/transitionToScene.js +12 -1
- package/src/engine/simulation/Ticker.js +1 -1
- package/src/engine/sound/ecs/SoundListenerSystem.js +1 -1
- package/src/generation/markers/debug/visualizeMarkers.js +1 -1
- package/src/generation/theme/TerrainLayerDescription.js +1 -1
- package/src/view/common/LabelView.js +3 -3
- package/src/engine/MeepSettings.js +0 -9
- package/src/engine/User.js +0 -28
- package/src/engine/UserController.js +0 -273
- package/src/engine/ecs/components/AABB.js +0 -33
- package/src/engine/ecs/components/AABBCollider.js +0 -15
- package/src/engine/ecs/components/AimController.js +0 -18
- package/src/engine/ecs/components/Attacker.js +0 -13
- package/src/engine/ecs/components/MeshCollider.js +0 -15
- package/src/engine/ecs/components/RangedAttack.js +0 -12
- package/src/engine/ecs/components/Renderable.d.ts +0 -14
- package/src/engine/ecs/components/TargetAI.js +0 -11
- package/src/engine/ecs/components/ViewportMeshProjection.js +0 -18
- package/src/engine/ecs/grid/Sampler2DDecoder.js +0 -57
- package/src/engine/ecs/grid/makeTerrainGeometry.js +0 -110
- package/src/engine/ecs/systems/AABBColliderSystem.js +0 -61
- package/src/engine/ecs/systems/AABBSystem.js +0 -89
- package/src/engine/ecs/systems/AimControllerSystem.js +0 -63
- package/src/engine/ecs/systems/AttackerSystem.js +0 -67
- package/src/engine/ecs/systems/MeshColliderSystem.js +0 -47
- package/src/engine/ecs/systems/MonsterAISystem.js +0 -163
- package/src/engine/ecs/systems/MortalitySystem.js +0 -46
- package/src/engine/ecs/systems/RangedAttackSystem.js +0 -132
- package/src/engine/ecs/systems/SerializationMetadataSystem.js +0 -10
- package/src/engine/ecs/systems/TargetAISystem.js +0 -107
- package/src/engine/ecs/systems/ViewportMeshProjectionSystem.js +0 -68
- package/src/engine/graphics/particles/ParticleEmitterLibrary.js +0 -87
- package/src/engine/graphics/texture/sampler/sampler2d_make_array_filler_function.js +0 -65
- package/src/engine/graphics/texture/sampler/sampler2d_scale_down_linear.spec.js +0 -17
- package/src/engine/graphics/trail/x/simulator/RibbonState.js +0 -10
- package/src/engine/grid/Grid.js +0 -131
- package/src/engine/grid/components/ViewportGridProjection.js +0 -20
- package/src/engine/grid/systems/GridObstacleSystem.js +0 -58
- package/src/engine/grid/systems/ViewportGridProjectionSystem.js +0 -105
- package/src/engine/navigation/grid/GridField.js +0 -328
- /package/src/{engine → core/primitives/array}/computeStridedIntegerArrayHash.js +0 -0
- /package/src/engine/ecs/{components → renderable}/RenderableFlags.js +0 -0
|
@@ -229,7 +229,7 @@ class EntityBuilder {
|
|
|
229
229
|
/**
|
|
230
230
|
*
|
|
231
231
|
* @param {string} eventName
|
|
232
|
-
* @param {*} event
|
|
232
|
+
* @param {*} [event]
|
|
233
233
|
*/
|
|
234
234
|
sendEvent(eventName, event) {
|
|
235
235
|
if (this.getFlag(EntityBuilderFlags.Built)) {
|
|
@@ -368,6 +368,8 @@ class EntityBuilder {
|
|
|
368
368
|
const subscription = listeners[i];
|
|
369
369
|
dataset.addEntityEventListener(entity, subscription.name, subscription.listener, subscription.context);
|
|
370
370
|
}
|
|
371
|
+
// reset listeners
|
|
372
|
+
this.deferredListeners.splice(0, listeners_count);
|
|
371
373
|
|
|
372
374
|
const element = this.element;
|
|
373
375
|
const element_count = element.length;
|
|
@@ -55,13 +55,18 @@ test("'Built' flag is reset when entity is removed without invoking 'destroy' me
|
|
|
55
55
|
|
|
56
56
|
const b = new EntityBuilder();
|
|
57
57
|
|
|
58
|
+
expect(b.getFlag(EntityBuilderFlags.Built)).toBe(false);
|
|
59
|
+
expect(b.isBuilt).toBe(false);
|
|
60
|
+
|
|
58
61
|
b.build(dataset);
|
|
59
62
|
|
|
60
63
|
expect(b.getFlag(EntityBuilderFlags.Built)).toBe(true);
|
|
64
|
+
expect(b.isBuilt).toBe(true);
|
|
61
65
|
|
|
62
66
|
dataset.removeEntity(b.entity);
|
|
63
67
|
|
|
64
68
|
expect(b.getFlag(EntityBuilderFlags.Built)).toBe(false);
|
|
69
|
+
expect(b.isBuilt).toBe(false);
|
|
65
70
|
});
|
|
66
71
|
|
|
67
72
|
test("removeAllComponents from empty", () => {
|
|
@@ -131,4 +136,20 @@ test("adding component to live entity results in component being added to the da
|
|
|
131
136
|
entity.add(component);
|
|
132
137
|
|
|
133
138
|
expect(ecd.getComponent(entity.entity, DummyComponent)).toBe(component);
|
|
139
|
+
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
test("promiseEvent", async () => {
|
|
143
|
+
|
|
144
|
+
const entity = new EntityBuilder();
|
|
145
|
+
|
|
146
|
+
const ecd = sampleDataset();
|
|
147
|
+
|
|
148
|
+
entity.build(ecd)
|
|
149
|
+
|
|
150
|
+
const promise = entity.promiseEvent("x");
|
|
151
|
+
|
|
152
|
+
entity.sendEvent("x");
|
|
153
|
+
|
|
154
|
+
await promise;
|
|
134
155
|
});
|
|
@@ -45,62 +45,63 @@ const revealMaskTableSpec = new RowFirstTableSpec([
|
|
|
45
45
|
|
|
46
46
|
const fadeRow = [];
|
|
47
47
|
|
|
48
|
+
/**
|
|
49
|
+
* @class
|
|
50
|
+
*/
|
|
48
51
|
export class FogOfWar {
|
|
49
|
-
constructor() {
|
|
50
|
-
/**
|
|
51
|
-
*
|
|
52
|
-
* @type {boolean}
|
|
53
|
-
*/
|
|
54
|
-
this.textureNeedsUpdate = false;
|
|
55
|
-
/**
|
|
56
|
-
*
|
|
57
|
-
* @type {boolean}
|
|
58
|
-
*/
|
|
59
|
-
this.distanceFieldNeedsUpdate = false;
|
|
60
52
|
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
53
|
+
/**
|
|
54
|
+
*
|
|
55
|
+
* @type {boolean}
|
|
56
|
+
*/
|
|
57
|
+
textureNeedsUpdate = true;
|
|
58
|
+
/**
|
|
59
|
+
*
|
|
60
|
+
* @type {boolean}
|
|
61
|
+
*/
|
|
62
|
+
distanceFieldNeedsUpdate = false;
|
|
71
63
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
64
|
+
/**
|
|
65
|
+
*
|
|
66
|
+
* @type {DataTexture|null}
|
|
67
|
+
*/
|
|
68
|
+
texture = null;
|
|
77
69
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
70
|
+
/**
|
|
71
|
+
* Resolution scale of FoW versus terrain resolution, higher number makes FoW more detailed
|
|
72
|
+
* @type {Vector1}
|
|
73
|
+
*/
|
|
74
|
+
scale = new Vector1(1);
|
|
83
75
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Size of the fog area
|
|
78
|
+
* @type {Vector2}
|
|
79
|
+
*/
|
|
80
|
+
size = new Vector2(0, 0);
|
|
89
81
|
|
|
90
|
-
|
|
82
|
+
color = new Vector4(0.1, 0.1, 0.1, 1);
|
|
91
83
|
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
84
|
+
/**
|
|
85
|
+
* Contains indices of pixes that are currently being updated
|
|
86
|
+
* @type {RowFirstTable}
|
|
87
|
+
*/
|
|
88
|
+
fadeMask = new RowFirstTable(revealMaskTableSpec);
|
|
97
89
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
90
|
+
on = {
|
|
91
|
+
textureChanged: new Signal()
|
|
92
|
+
};
|
|
101
93
|
|
|
102
|
-
|
|
103
|
-
|
|
94
|
+
/**
|
|
95
|
+
*
|
|
96
|
+
* @type {Sampler2D}
|
|
97
|
+
*/
|
|
98
|
+
sampler = Sampler2D.uint8(1, 0, 0);
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
*
|
|
102
|
+
* @type {Sampler2D}
|
|
103
|
+
*/
|
|
104
|
+
distanceSampler = Sampler2D.uint8(1, 0, 0);
|
|
104
105
|
|
|
105
106
|
/**
|
|
106
107
|
*
|
|
@@ -159,13 +160,6 @@ export class FogOfWar {
|
|
|
159
160
|
}
|
|
160
161
|
}
|
|
161
162
|
|
|
162
|
-
initialize() {
|
|
163
|
-
this.sampler = new Sampler2D(new Uint8Array(0), 1, 0, 0);
|
|
164
|
-
this.distanceSampler = new Sampler2D(new Uint8Array(0), 1, 0, 0);
|
|
165
|
-
|
|
166
|
-
this.textureNeedsUpdate = true;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
163
|
/**
|
|
170
164
|
*
|
|
171
165
|
* @param {number} x
|
|
@@ -97,9 +97,9 @@ class ViewportPosition {
|
|
|
97
97
|
|
|
98
98
|
hash() {
|
|
99
99
|
return computeHashIntegerArray(
|
|
100
|
-
this.position.
|
|
101
|
-
this.offset.
|
|
102
|
-
this.anchor.
|
|
100
|
+
this.position.hash(),
|
|
101
|
+
this.offset.hash(),
|
|
102
|
+
this.anchor.hash(),
|
|
103
103
|
this.resolveGuiCollisions ? 1 : 0,
|
|
104
104
|
computeHashFloat(this.screenEdgeWidth),
|
|
105
105
|
this.stickToScreenEdge ? 1 : 0,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {System} from "../System";
|
|
2
2
|
import {GraphicsEngine} from "../../graphics/GraphicsEngine";
|
|
3
|
-
import Renderable from "
|
|
3
|
+
import Renderable from "./Renderable";
|
|
4
4
|
|
|
5
5
|
export default class RenderSystem extends System<Renderable> {
|
|
6
6
|
constructor(graphics: GraphicsEngine)
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
* Created by Alex on 01/04/2014.
|
|
3
3
|
*/
|
|
4
4
|
import { System } from '../System.js';
|
|
5
|
-
import Renderable from '
|
|
5
|
+
import Renderable from './Renderable.js';
|
|
6
6
|
import { Transform } from '../transform/Transform.js';
|
|
7
7
|
import { SignalBinding } from "../../../core/events/signal/SignalBinding.js";
|
|
8
|
-
import { RenderableFlags } from "
|
|
8
|
+
import { RenderableFlags } from "./RenderableFlags.js";
|
|
9
9
|
import { rootObject3DFastMatrixUpdate } from "../../graphics/ecs/mesh/rootObject3DFastMatrixUpdate.js";
|
|
10
10
|
import { updateNodeByTransformAndBBB } from "../../graphics/ecs/mesh/updateNodeByTransformAndBBB.js";
|
|
11
|
-
import { three_computeObjectBoundingBox } from "../../graphics/three/three_computeObjectBoundingBox.js";
|
|
12
11
|
import { ResourceAccessSpecification } from "../../../core/model/ResourceAccessSpecification.js";
|
|
13
12
|
import { ResourceAccessKind } from "../../../core/model/ResourceAccessKind.js";
|
|
13
|
+
import { copy_transform_to_threejs_object } from "../../graphics/copy_transform_to_threejs_object.js";
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -111,37 +111,11 @@ class RenderSystem extends System {
|
|
|
111
111
|
|
|
112
112
|
if (renderable.getFlag(RenderableFlags.BoundingBoxNeedsUpdate)) {
|
|
113
113
|
// compute bounding box
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
renderable.clearFlag(RenderableFlags.BoundingBoxNeedsUpdate);
|
|
114
|
+
renderable.computeBoundsFromObject();
|
|
117
115
|
}
|
|
118
116
|
|
|
119
|
-
function
|
|
120
|
-
|
|
121
|
-
const p = m.position;
|
|
122
|
-
if (p.x !== x || p.y !== y || p.z !== z) {
|
|
123
|
-
p.set(x, y, z);
|
|
124
|
-
}
|
|
125
|
-
updateMeshTransform(renderable);
|
|
126
|
-
updateNodeByTransformAndBBB(renderable.bvh, renderable.boundingBox, transform);
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function copyScaleOfMesh(x, y, z) {
|
|
130
|
-
const m = renderable.object;
|
|
131
|
-
const scale = m.scale;
|
|
132
|
-
if (scale.x !== x || scale.y !== y || scale.z !== z) {
|
|
133
|
-
scale.set(x, y, z);
|
|
134
|
-
}
|
|
135
|
-
updateMeshTransform(renderable);
|
|
136
|
-
updateNodeByTransformAndBBB(renderable.bvh, renderable.boundingBox, transform);
|
|
137
|
-
}
|
|
138
|
-
|
|
139
|
-
function handleRotationChange() {
|
|
140
|
-
const m = renderable.object;
|
|
141
|
-
const euler = m.rotation;
|
|
142
|
-
|
|
143
|
-
transform.rotation.__setFromEuler(euler.x, euler.y, euler.z, euler.order);
|
|
144
|
-
|
|
117
|
+
function handle_transform_change() {
|
|
118
|
+
copy_transform_to_threejs_object(renderable.object, transform);
|
|
145
119
|
updateMeshTransform(renderable);
|
|
146
120
|
updateNodeByTransformAndBBB(renderable.bvh, renderable.boundingBox, transform);
|
|
147
121
|
}
|
|
@@ -149,9 +123,9 @@ class RenderSystem extends System {
|
|
|
149
123
|
const position = transform.position;
|
|
150
124
|
const scale = transform.scale;
|
|
151
125
|
|
|
152
|
-
const bPosition = new SignalBinding(position.onChanged,
|
|
153
|
-
const bRotation = new SignalBinding(transform.rotation.onChanged,
|
|
154
|
-
const bScale = new SignalBinding(scale.onChanged,
|
|
126
|
+
const bPosition = new SignalBinding(position.onChanged, handle_transform_change);
|
|
127
|
+
const bRotation = new SignalBinding(transform.rotation.onChanged, handle_transform_change);
|
|
128
|
+
const bScale = new SignalBinding(scale.onChanged, handle_transform_change);
|
|
155
129
|
|
|
156
130
|
bPosition.link();
|
|
157
131
|
bRotation.link();
|
|
@@ -163,9 +137,7 @@ class RenderSystem extends System {
|
|
|
163
137
|
bScale
|
|
164
138
|
];
|
|
165
139
|
|
|
166
|
-
|
|
167
|
-
copyScaleOfMesh(scale.x, scale.y, scale.z);
|
|
168
|
-
handleRotationChange();
|
|
140
|
+
handle_transform_change();
|
|
169
141
|
|
|
170
142
|
this.bvh.insertNode(renderable.bvh);
|
|
171
143
|
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import {Object3D} from "three";
|
|
2
|
+
import {AABB3} from "../../../core/geom/3d/aabb/AABB3";
|
|
3
|
+
import {LeafNode} from "../../../core/bvh2/LeafNode";
|
|
4
|
+
|
|
5
|
+
export default class Renderable {
|
|
6
|
+
readonly object: Object3D
|
|
7
|
+
readonly boundingBox: AABB3
|
|
8
|
+
|
|
9
|
+
matrixAutoUpdate: boolean
|
|
10
|
+
boundingBoxNeedsUpdate: boolean
|
|
11
|
+
|
|
12
|
+
readonly bvh: LeafNode<Object3D>
|
|
13
|
+
|
|
14
|
+
constructor(object: Object3D)
|
|
15
|
+
|
|
16
|
+
setFlag(flag: number): void
|
|
17
|
+
|
|
18
|
+
clearFlag(flag: number): void
|
|
19
|
+
|
|
20
|
+
writeFlag(flag: number, value: boolean): void
|
|
21
|
+
|
|
22
|
+
getFlag(flag: number): boolean
|
|
23
|
+
|
|
24
|
+
computeBoundsFromObject(): void
|
|
25
|
+
}
|
|
@@ -5,29 +5,15 @@
|
|
|
5
5
|
|
|
6
6
|
import { LeafNode } from "../../../core/bvh2/LeafNode.js";
|
|
7
7
|
import { AABB3 } from "../../../core/geom/3d/aabb/AABB3.js";
|
|
8
|
-
import { Vector3 as ThreeVector3 } from "three";
|
|
9
|
-
import { max2 } from "../../../core/math/max2.js";
|
|
10
|
-
import { min2 } from "../../../core/math/min2.js";
|
|
11
8
|
import { RenderableFlags } from "./RenderableFlags.js";
|
|
9
|
+
import { MATRIX_4_IDENTITY } from "../../../core/geom/3d/matrix/MATRIX_4_IDENTITY.js";
|
|
10
|
+
import {
|
|
11
|
+
expand_aabb_by_transformed_three_object
|
|
12
|
+
} from "../../graphics/three/expand_aabb_by_transformed_three_object.js";
|
|
12
13
|
|
|
13
14
|
const DEFAULT_FLAGS = RenderableFlags.UpdateMatrix | RenderableFlags.BoundingBoxNeedsUpdate;
|
|
14
15
|
|
|
15
16
|
|
|
16
|
-
/**
|
|
17
|
-
*
|
|
18
|
-
* @type {Vector3[]}
|
|
19
|
-
*/
|
|
20
|
-
const scratch_corners = [
|
|
21
|
-
new ThreeVector3(),
|
|
22
|
-
new ThreeVector3(),
|
|
23
|
-
new ThreeVector3(),
|
|
24
|
-
new ThreeVector3(),
|
|
25
|
-
new ThreeVector3(),
|
|
26
|
-
new ThreeVector3(),
|
|
27
|
-
new ThreeVector3(),
|
|
28
|
-
new ThreeVector3()
|
|
29
|
-
];
|
|
30
|
-
|
|
31
17
|
/**
|
|
32
18
|
@deprecated use {@link ShadedGeometry} instead
|
|
33
19
|
*/
|
|
@@ -157,83 +143,32 @@ class Renderable {
|
|
|
157
143
|
computeBoundsFromObject() {
|
|
158
144
|
const object = this.object;
|
|
159
145
|
|
|
160
|
-
|
|
161
|
-
y0 = Infinity,
|
|
162
|
-
z0 = Infinity,
|
|
163
|
-
x1 = -Infinity,
|
|
164
|
-
y1 = -Infinity,
|
|
165
|
-
z1 = -Infinity;
|
|
166
|
-
|
|
167
|
-
object.updateMatrixWorld(false, true);
|
|
168
|
-
|
|
169
|
-
object.traverse(function (object) {
|
|
170
|
-
if (object.isLine || object.isMesh) {
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
const geometry = object.geometry;
|
|
174
|
-
|
|
175
|
-
geometry.computeBoundingBox();
|
|
176
|
-
|
|
177
|
-
const boundingBox = geometry.boundingBox;
|
|
146
|
+
object.updateMatrixWorld();
|
|
178
147
|
|
|
179
|
-
|
|
180
|
-
|
|
148
|
+
const aabb = new Float32Array([
|
|
149
|
+
Infinity, Infinity, Infinity,
|
|
150
|
+
-Infinity, -Infinity, -Infinity
|
|
151
|
+
]);
|
|
181
152
|
|
|
182
|
-
|
|
183
|
-
// object has 0 bounds, skip
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
object.updateMatrixWorld();
|
|
188
|
-
|
|
189
|
-
const worldMatrix = object.matrixWorld;
|
|
190
|
-
|
|
191
|
-
// set corner data
|
|
192
|
-
scratch_corners[0].set(bbMin.x, bbMin.y, bbMin.z);
|
|
193
|
-
scratch_corners[1].set(bbMin.x, bbMin.y, bbMax.z);
|
|
194
|
-
scratch_corners[2].set(bbMin.x, bbMax.y, bbMin.z);
|
|
195
|
-
scratch_corners[3].set(bbMin.x, bbMax.y, bbMax.z);
|
|
196
|
-
scratch_corners[4].set(bbMax.x, bbMin.y, bbMin.z);
|
|
197
|
-
scratch_corners[5].set(bbMax.x, bbMin.y, bbMax.z);
|
|
198
|
-
scratch_corners[6].set(bbMax.x, bbMax.y, bbMin.z);
|
|
199
|
-
scratch_corners[7].set(bbMax.x, bbMax.y, bbMax.z);
|
|
200
|
-
|
|
201
|
-
for (let i = 0; i < 8; i++) {
|
|
202
|
-
const corner = scratch_corners[i];
|
|
203
|
-
|
|
204
|
-
corner.applyMatrix4(worldMatrix);
|
|
205
|
-
|
|
206
|
-
x0 = min2(x0, corner.x);
|
|
207
|
-
y0 = min2(y0, corner.y);
|
|
208
|
-
z0 = min2(z0, corner.z);
|
|
209
|
-
|
|
210
|
-
x1 = max2(x1, corner.x);
|
|
211
|
-
y1 = max2(y1, corner.y);
|
|
212
|
-
z1 = max2(z1, corner.z);
|
|
213
|
-
}
|
|
214
|
-
}
|
|
215
|
-
});
|
|
153
|
+
expand_aabb_by_transformed_three_object(aabb, object, MATRIX_4_IDENTITY);
|
|
216
154
|
|
|
217
155
|
// sanity checks to ensure valid bounds
|
|
218
|
-
if (!Number.isFinite(
|
|
219
|
-
|
|
220
|
-
x1 = 0;
|
|
156
|
+
if (!Number.isFinite(aabb[0])) {
|
|
157
|
+
aabb[0] = aabb[3] = 0;
|
|
221
158
|
}
|
|
222
159
|
|
|
223
|
-
if (!Number.isFinite(
|
|
224
|
-
|
|
225
|
-
y1 = 0;
|
|
160
|
+
if (!Number.isFinite(aabb[1])) {
|
|
161
|
+
aabb[1] = aabb[4] = 0;
|
|
226
162
|
}
|
|
227
163
|
|
|
228
|
-
if (!Number.isFinite(
|
|
229
|
-
|
|
230
|
-
z1 = 0;
|
|
164
|
+
if (!Number.isFinite(aabb[2])) {
|
|
165
|
+
aabb[2] = aabb[5] = 0;
|
|
231
166
|
}
|
|
232
167
|
|
|
233
168
|
|
|
234
|
-
this.boundingBox.
|
|
169
|
+
this.boundingBox.readFromArray(aabb);
|
|
235
170
|
|
|
236
|
-
this.
|
|
171
|
+
this.clearFlag(RenderableFlags.BoundingBoxNeedsUpdate);
|
|
237
172
|
}
|
|
238
173
|
}
|
|
239
174
|
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Renderable from "./Renderable.js";
|
|
2
|
+
import { Object3D } from "three";
|
|
3
|
+
import { RenderableFlags } from "./RenderableFlags.js";
|
|
4
|
+
|
|
5
|
+
test("constructor", () => {
|
|
6
|
+
|
|
7
|
+
const unit = new Renderable(new Object3D());
|
|
8
|
+
|
|
9
|
+
expect(unit.getFlag(RenderableFlags.BoundingBoxNeedsUpdate)).toBe(true);
|
|
10
|
+
});
|
|
@@ -20,7 +20,6 @@ import { Blackboard } from "../../intelligence/blackboard/Blackboard.js";
|
|
|
20
20
|
import { VoiceFlags } from "./VoiceFlags.js";
|
|
21
21
|
import { assert } from "../../../core/assert.js";
|
|
22
22
|
import { weightedRandomFromArray } from "../../../core/collection/array/weightedRandomFromArray.js";
|
|
23
|
-
import { MeepSettings } from "../../MeepSettings.js";
|
|
24
23
|
import { GameAssetType } from "../../asset/GameAssetType.js";
|
|
25
24
|
import { DomSizeObserver } from "../../../view/util/DomSizeObserver.js";
|
|
26
25
|
import { SpeechBubbleView } from "./SpeechBubbleView.js";
|
|
@@ -140,8 +139,6 @@ class Context extends SystemEntityContext {
|
|
|
140
139
|
}
|
|
141
140
|
}
|
|
142
141
|
|
|
143
|
-
const VOICE_SETTINGS = MeepSettings.ecs.Voice;
|
|
144
|
-
|
|
145
142
|
const SPEECH_BUBBLE_ANIMATION_INTRO = new AnimationTrack(['alpha']);
|
|
146
143
|
SPEECH_BUBBLE_ANIMATION_INTRO.addKey(0, [0]);
|
|
147
144
|
SPEECH_BUBBLE_ANIMATION_INTRO.addKey(0.1, [1]);
|
|
@@ -167,8 +164,12 @@ export class VoiceSystem extends AbstractContextSystem {
|
|
|
167
164
|
/**
|
|
168
165
|
*
|
|
169
166
|
* @param {Engine} engine
|
|
167
|
+
* @param settings
|
|
170
168
|
*/
|
|
171
|
-
constructor(engine
|
|
169
|
+
constructor(engine, settings = {
|
|
170
|
+
font: "unknown.ttf", //path to font file
|
|
171
|
+
font_size: 16
|
|
172
|
+
}) {
|
|
172
173
|
super(Context);
|
|
173
174
|
|
|
174
175
|
this.dependencies = [Voice];
|
|
@@ -239,9 +240,16 @@ export class VoiceSystem extends AbstractContextSystem {
|
|
|
239
240
|
|
|
240
241
|
/**
|
|
241
242
|
*
|
|
243
|
+
* @type {string}
|
|
242
244
|
* @private
|
|
243
245
|
*/
|
|
244
|
-
this.
|
|
246
|
+
this.__font_path = settings.font;
|
|
247
|
+
|
|
248
|
+
/**
|
|
249
|
+
*
|
|
250
|
+
* @private
|
|
251
|
+
*/
|
|
252
|
+
this.__font_size = settings.font_size;
|
|
245
253
|
|
|
246
254
|
/**
|
|
247
255
|
* Print debug output into console
|
|
@@ -274,11 +282,9 @@ export class VoiceSystem extends AbstractContextSystem {
|
|
|
274
282
|
assert.defined(this.lines, 'lines');
|
|
275
283
|
assert.defined(this.sets, 'sets');
|
|
276
284
|
|
|
277
|
-
const p_font_setting = engine.assetManager.promise(
|
|
278
|
-
|
|
279
|
-
const font = font_asset.create();
|
|
285
|
+
const p_font_setting = engine.assetManager.promise(this.__font_path, GameAssetType.Font).then(font_asset => {
|
|
280
286
|
|
|
281
|
-
this.__font =
|
|
287
|
+
this.__font = font_asset.create();
|
|
282
288
|
});
|
|
283
289
|
|
|
284
290
|
p_font_setting.then(() => {
|
|
@@ -16,7 +16,7 @@ import { assert } from "../../../../../core/assert.js";
|
|
|
16
16
|
import Vector2 from "../../../../../core/geom/Vector2.js";
|
|
17
17
|
import { TerrainLayer } from "./TerrainLayer.js";
|
|
18
18
|
import { Sampler2D } from "../../../../graphics/texture/sampler/Sampler2D.js";
|
|
19
|
-
import {
|
|
19
|
+
import { sampler2d_scale } from "../../../../graphics/texture/sampler/resize/sampler2d_scale.js";
|
|
20
20
|
import List from "../../../../../core/collection/list/List.js";
|
|
21
21
|
import { Cache } from "../../../../../core/cache/Cache.js";
|
|
22
22
|
import { BinaryClassSerializationAdapter } from "../../../storage/binary/BinaryClassSerializationAdapter.js";
|
|
@@ -50,7 +50,7 @@ class ScaledTextureKey {
|
|
|
50
50
|
}
|
|
51
51
|
|
|
52
52
|
hash() {
|
|
53
|
-
return computeStringHash(this.uri) ^ this.size.
|
|
53
|
+
return computeStringHash(this.uri) ^ this.size.hash();
|
|
54
54
|
}
|
|
55
55
|
|
|
56
56
|
equals(other) {
|
|
@@ -363,7 +363,7 @@ export class TerrainLayers {
|
|
|
363
363
|
|
|
364
364
|
const scaledLayerSampler = Sampler2D.uint8(3, resolution_x, resolution_y);
|
|
365
365
|
|
|
366
|
-
|
|
366
|
+
sampler2d_scale(layerSampler, scaledLayerSampler);
|
|
367
367
|
|
|
368
368
|
// write scaled texture into the cache
|
|
369
369
|
scaled_texture_cache.put(key, scaledLayerSampler);
|
|
@@ -2,9 +2,9 @@ import { Sampler2D } from "../../../../graphics/texture/sampler/Sampler2D.js";
|
|
|
2
2
|
import convertSampler2D2Canvas from "../../../../graphics/texture/sampler/Sampler2D2Canvas.js";
|
|
3
3
|
import { CanvasView } from "../../../../../view/elements/CanvasView.js";
|
|
4
4
|
import EmptyView from "../../../../../view/elements/EmptyView.js";
|
|
5
|
-
import {
|
|
5
|
+
import { sampler2d_scale } from "../../../../graphics/texture/sampler/resize/sampler2d_scale.js";
|
|
6
6
|
import { passThrough } from "../../../../../core/function/Functions.js";
|
|
7
|
-
import AABB2 from "../../../../../core/geom/AABB2.js";
|
|
7
|
+
import AABB2 from "../../../../../core/geom/2d/aabb/AABB2.js";
|
|
8
8
|
import View from "../../../../../view/View.js";
|
|
9
9
|
import SVG from "../../../../../view/SVG.js";
|
|
10
10
|
import Vector2 from "../../../../../core/geom/Vector2.js";
|
|
@@ -218,7 +218,7 @@ export class SplatMapOptimizerDebugger {
|
|
|
218
218
|
|
|
219
219
|
const s2 = Sampler2D.uint8(4, rW, rH);
|
|
220
220
|
|
|
221
|
-
|
|
221
|
+
sampler2d_scale(sampler, s2);
|
|
222
222
|
|
|
223
223
|
const canvasView = new CanvasView();
|
|
224
224
|
canvasView.size.set(rW, rH);
|
|
@@ -4,7 +4,7 @@ import { max2 } from "../../../../../core/math/max2.js";
|
|
|
4
4
|
import { min2 } from "../../../../../core/math/min2.js";
|
|
5
5
|
import { Sampler2D } from "../../../../graphics/texture/sampler/Sampler2D.js";
|
|
6
6
|
import { assert } from "../../../../../core/assert.js";
|
|
7
|
-
import {
|
|
7
|
+
import { sampler2d_scale } from "../../../../graphics/texture/sampler/resize/sampler2d_scale.js";
|
|
8
8
|
import { array_copy } from "../../../../../core/collection/array/array_copy.js";
|
|
9
9
|
import { typed_array_copy } from "../../../../../core/collection/array/typed/typed_array_copy.js";
|
|
10
10
|
import { Base64 } from "../../../../../core/binary/Base64.js";
|
|
@@ -520,7 +520,7 @@ export class SplatMapping {
|
|
|
520
520
|
const source = new Sampler2D(oldWeightData.subarray(d * oldLayerSize, (d + 1) * oldLayerSize), 1, oldWidth, oldHeight);
|
|
521
521
|
const target = new Sampler2D(weightImage.data.subarray(d * newLayerSize, (d + 1) * newLayerSize), 1, width, height);
|
|
522
522
|
|
|
523
|
-
|
|
523
|
+
sampler2d_scale(source, target);
|
|
524
524
|
}
|
|
525
525
|
}
|
|
526
526
|
|
|
@@ -11,7 +11,7 @@ import { assert } from "../../../../core/assert.js";
|
|
|
11
11
|
import ObservedString from "../../../../core/model/ObservedString.js";
|
|
12
12
|
import { ClampToEdgeWrapping, DataTexture, NearestFilter } from "three";
|
|
13
13
|
import { Sampler2D } from "../../../graphics/texture/sampler/Sampler2D.js";
|
|
14
|
-
import {
|
|
14
|
+
import { sampler2d_scale } from "../../../graphics/texture/sampler/resize/sampler2d_scale.js";
|
|
15
15
|
import { uint82float } from "../../../../core/binary/uint82float.js";
|
|
16
16
|
import { float2uint8 } from "../../../../core/binary/float2uint8.js";
|
|
17
17
|
import { isTypedArray } from "../../../../core/collection/array/typed/isTypedArray.js";
|
|
@@ -314,7 +314,7 @@ export class TerrainOverlay {
|
|
|
314
314
|
|
|
315
315
|
// rescale source if needed
|
|
316
316
|
const scaled_source = Sampler2D.uint8(4, dWidth, dHeight);
|
|
317
|
-
|
|
317
|
+
sampler2d_scale(source, scaled_source);
|
|
318
318
|
|
|
319
319
|
this.sampler.paint(scaled_source, 0, 0, dx, dy, dWidth, dHeight);
|
|
320
320
|
|
|
@@ -2,7 +2,7 @@ import { Sampler2D } from "../../../graphics/texture/sampler/Sampler2D.js";
|
|
|
2
2
|
import { ParameterLookupTable } from "../../../graphics/particles/particular/engine/parameter/ParameterLookupTable.js";
|
|
3
3
|
import { passThrough } from "../../../../core/function/Functions.js";
|
|
4
4
|
import { clamp01 } from "../../../../core/math/clamp01.js";
|
|
5
|
-
import {
|
|
5
|
+
import { sampler2d_scale } from "../../../graphics/texture/sampler/resize/sampler2d_scale.js";
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
const heatmap_lut = new ParameterLookupTable(4);
|
|
@@ -43,7 +43,7 @@ export function paintTerrainOverlayViaLookupTable({
|
|
|
43
43
|
// rescale source
|
|
44
44
|
const scaled_sampler = sampler.clone();
|
|
45
45
|
scaled_sampler.resize(w, h);
|
|
46
|
-
|
|
46
|
+
sampler2d_scale(sampler, scaled_sampler);
|
|
47
47
|
|
|
48
48
|
for (j = 0; j < h; j++) {
|
|
49
49
|
|