custom-pixi-particles 8.12.0 → 8.13.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/dist/index.d.ts +10 -4
- package/dist/index.js +14 -5
- package/dist/index.js.map +1 -1
- package/dist/lib/Model.d.ts +13 -0
- package/dist/lib/Model.js +14 -0
- package/dist/lib/Model.js.map +1 -1
- package/dist/lib/Particle.d.ts +60 -0
- package/dist/lib/Particle.js +80 -0
- package/dist/lib/Particle.js.map +1 -1
- package/dist/lib/behaviour/BeatPhaseLockBehaviour.d.ts +26 -0
- package/dist/lib/behaviour/BeatPhaseLockBehaviour.js +68 -0
- package/dist/lib/behaviour/BeatPhaseLockBehaviour.js.map +1 -0
- package/dist/lib/behaviour/BehaviourNames.d.ts +11 -0
- package/dist/lib/behaviour/BehaviourNames.js +11 -0
- package/dist/lib/behaviour/BehaviourNames.js.map +1 -1
- package/dist/lib/behaviour/BezierFlowTubeBehaviour.d.ts +33 -0
- package/dist/lib/behaviour/BezierFlowTubeBehaviour.js +90 -0
- package/dist/lib/behaviour/BezierFlowTubeBehaviour.js.map +1 -0
- package/dist/lib/behaviour/DamageFlashRippleBehaviour.d.ts +27 -0
- package/dist/lib/behaviour/DamageFlashRippleBehaviour.js +77 -0
- package/dist/lib/behaviour/DamageFlashRippleBehaviour.js.map +1 -0
- package/dist/lib/behaviour/EmitterAttractorLinkBehaviour.d.ts +23 -0
- package/dist/lib/behaviour/EmitterAttractorLinkBehaviour.js +58 -0
- package/dist/lib/behaviour/EmitterAttractorLinkBehaviour.js.map +1 -0
- package/dist/lib/behaviour/EmitterBehaviours.js +11 -9
- package/dist/lib/behaviour/EmitterBehaviours.js.map +1 -1
- package/dist/lib/behaviour/FormPatternBehaviour.d.ts +488 -0
- package/dist/lib/behaviour/FormPatternBehaviour.js +2081 -0
- package/dist/lib/behaviour/FormPatternBehaviour.js.map +1 -0
- package/dist/lib/behaviour/KelvinWakeBehaviour.d.ts +27 -0
- package/dist/lib/behaviour/KelvinWakeBehaviour.js +76 -0
- package/dist/lib/behaviour/KelvinWakeBehaviour.js.map +1 -0
- package/dist/lib/behaviour/LifeBehaviour.d.ts +7 -0
- package/dist/lib/behaviour/LifeBehaviour.js +22 -2
- package/dist/lib/behaviour/LifeBehaviour.js.map +1 -1
- package/dist/lib/behaviour/LissajousHarmonicLatticeBehaviour.d.ts +2 -2
- package/dist/lib/behaviour/LissajousHarmonicLatticeBehaviour.js +4 -4
- package/dist/lib/behaviour/LissajousHarmonicLatticeBehaviour.js.map +1 -1
- package/dist/lib/behaviour/ObstacleSDFSteerBehaviour.d.ts +35 -0
- package/dist/lib/behaviour/ObstacleSDFSteerBehaviour.js +90 -0
- package/dist/lib/behaviour/ObstacleSDFSteerBehaviour.js.map +1 -0
- package/dist/lib/behaviour/PositionBehaviour.d.ts +1 -0
- package/dist/lib/behaviour/PositionBehaviour.js +3 -2
- package/dist/lib/behaviour/PositionBehaviour.js.map +1 -1
- package/dist/lib/behaviour/RVOAvoidanceBehaviour.d.ts +23 -0
- package/dist/lib/behaviour/RVOAvoidanceBehaviour.js +94 -0
- package/dist/lib/behaviour/RVOAvoidanceBehaviour.js.map +1 -0
- package/dist/lib/behaviour/ScreenSpaceFlowMapBehaviour.d.ts +27 -0
- package/dist/lib/behaviour/ScreenSpaceFlowMapBehaviour.js +90 -0
- package/dist/lib/behaviour/ScreenSpaceFlowMapBehaviour.js.map +1 -0
- package/dist/lib/behaviour/ShearFlowBehaviour.d.ts +28 -0
- package/dist/lib/behaviour/ShearFlowBehaviour.js +69 -0
- package/dist/lib/behaviour/ShearFlowBehaviour.js.map +1 -0
- package/dist/lib/behaviour/SizeBehaviour.d.ts +3 -0
- package/dist/lib/behaviour/SizeBehaviour.js +19 -7
- package/dist/lib/behaviour/SizeBehaviour.js.map +1 -1
- package/dist/lib/behaviour/ToroidalWrapBehaviour.d.ts +43 -0
- package/dist/lib/behaviour/ToroidalWrapBehaviour.js +93 -0
- package/dist/lib/behaviour/ToroidalWrapBehaviour.js.map +1 -0
- package/dist/lib/behaviour/index.d.ts +14 -1
- package/dist/lib/behaviour/index.js +12 -1
- package/dist/lib/behaviour/index.js.map +1 -1
- package/dist/lib/customPixiParticlesSettingsInterface.d.ts +11 -0
- package/dist/lib/effects/MetaballPass.d.ts +66 -0
- package/dist/lib/effects/MetaballPass.js +170 -0
- package/dist/lib/effects/MetaballPass.js.map +1 -0
- package/dist/lib/effects/index.d.ts +2 -0
- package/dist/lib/effects/index.js +2 -0
- package/dist/lib/effects/index.js.map +1 -1
- package/dist/lib/emission/EmissionTypes.d.ts +2 -0
- package/dist/lib/emission/EmissionTypes.js +2 -0
- package/dist/lib/emission/EmissionTypes.js.map +1 -1
- package/dist/lib/emission/PersistentFillEmission.d.ts +20 -0
- package/dist/lib/emission/PersistentFillEmission.js +43 -0
- package/dist/lib/emission/PersistentFillEmission.js.map +1 -0
- package/dist/lib/emission/index.d.ts +2 -1
- package/dist/lib/emission/index.js +2 -1
- package/dist/lib/emission/index.js.map +1 -1
- package/dist/lib/emitter/Emitter.d.ts +9 -1
- package/dist/lib/emitter/Emitter.js +6 -0
- package/dist/lib/emitter/Emitter.js.map +1 -1
- package/dist/lib/emitter/PersistentWrapEmitter.d.ts +13 -0
- package/dist/lib/emitter/PersistentWrapEmitter.js +21 -0
- package/dist/lib/emitter/PersistentWrapEmitter.js.map +1 -0
- package/dist/lib/emitter/index.d.ts +2 -1
- package/dist/lib/emitter/index.js +2 -1
- package/dist/lib/emitter/index.js.map +1 -1
- package/dist/lib/index.d.ts +2 -1
- package/dist/lib/index.js +2 -1
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/parser/CompatibilityHelper.js +1 -1
- package/dist/lib/parser/CompatibilityHelper.js.map +1 -1
- package/dist/lib/parser/EmitControllerParser.d.ts +5 -0
- package/dist/lib/parser/EmitControllerParser.js +15 -2
- package/dist/lib/parser/EmitControllerParser.js.map +1 -1
- package/dist/lib/parser/EmitterParser.js +14 -0
- package/dist/lib/parser/EmitterParser.js.map +1 -1
- package/dist/lib/pixi/Renderer.d.ts +21 -1
- package/dist/lib/pixi/Renderer.js +129 -3
- package/dist/lib/pixi/Renderer.js.map +1 -1
- package/dist/lib/pixi/TestRenderer.d.ts +16 -0
- package/dist/lib/pixi/TestRenderer.js +135 -4
- package/dist/lib/pixi/TestRenderer.js.map +1 -1
- package/dist/lib/pixi/particleLinkLayer.d.ts +31 -0
- package/dist/lib/pixi/particleLinkLayer.js +111 -0
- package/dist/lib/pixi/particleLinkLayer.js.map +1 -0
- package/dist/lib/util/formPatternSampling.d.ts +171 -0
- package/dist/lib/util/formPatternSampling.js +1165 -0
- package/dist/lib/util/formPatternSampling.js.map +1 -0
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import Renderer from './lib/pixi/Renderer';
|
|
2
2
|
import { ICustomPixiParticlesSettings } from './lib/customPixiParticlesSettingsInterface';
|
|
3
3
|
import TestRenderer from './lib/pixi/TestRenderer';
|
|
4
|
-
import { CrystallizeEffect, DissolveEffect, GhostEffect, GlitchEffect, GranularErosionEffect, LiquidMercuryEffect, MagneticAssemblyEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, ShatterEffect, SlitScanEffect } from './lib/effects';
|
|
5
|
-
export type { IShatterEffectOptions, ShatterMode, IDissolveEffectOptions, DissolveDirection, IMagneticAssemblyOptions, AssemblyMode, IGhostEffectOptions, IGlitchEffectOptions, IMeltEffectOptions, IPixelSortEffectOptions, PixelSortDirection, PixelSortMode, PixelSortOrder, IPrismRefractionEffectOptions, ICrystallizeEffectOptions, ISlitScanEffectOptions, SlitScanMode, IGranularErosionEffectOptions, ILiquidMercuryEffectOptions, } from './lib/effects';
|
|
4
|
+
import { CrystallizeEffect, DissolveEffect, GhostEffect, GlitchEffect, GranularErosionEffect, LiquidMercuryEffect, MagneticAssemblyEffect, MetaballPass, MeltEffect, PixelSortEffect, PrismRefractionEffect, ShatterEffect, SlitScanEffect } from './lib/effects';
|
|
5
|
+
export type { IShatterEffectOptions, ShatterMode, IDissolveEffectOptions, DissolveDirection, IMagneticAssemblyOptions, AssemblyMode, IGhostEffectOptions, IGlitchEffectOptions, IMeltEffectOptions, IPixelSortEffectOptions, PixelSortDirection, PixelSortMode, PixelSortOrder, IPrismRefractionEffectOptions, ICrystallizeEffectOptions, ISlitScanEffectOptions, SlitScanMode, IGranularErosionEffectOptions, ILiquidMercuryEffectOptions, IMetaballPassOptions, } from './lib/effects';
|
|
6
6
|
/**
|
|
7
7
|
* Constructs a renderer for custom pixi particles
|
|
8
8
|
* @class Renderer
|
|
@@ -15,7 +15,13 @@ declare const _customPixiParticlesEditorOnly: {
|
|
|
15
15
|
create(settings: ICustomPixiParticlesSettings): TestRenderer;
|
|
16
16
|
};
|
|
17
17
|
export type { TextureVariant, TextureVariantFrames, TextureVariantStaticRandom } from './lib/textureVariants';
|
|
18
|
+
export type { IParticleLinkSettings } from './lib/pixi/particleLinkLayer';
|
|
19
|
+
export { drawParticleLinks, mergeParticleLinkSettings, PARTICLE_LINK_DEFAULTS, } from './lib/pixi/particleLinkLayer';
|
|
18
20
|
export type { IBehaviour } from './lib/behaviour';
|
|
19
|
-
export { Behaviour, BehaviourRegistry, EmitterBehaviours, SpawnBehaviour, LifeBehaviour, PositionBehaviour, ColorBehaviour, SizeBehaviour, AngularVelocityBehaviour, EmitDirectionBehaviour, RotationBehaviour, TurbulenceBehaviour, CollisionBehaviour, AttractionRepulsionBehaviour, NoiseBasedMotionBehaviour, ForceFieldsBehaviour, TimelineBehaviour, GroupingBehaviour, SoundReactiveBehaviour, LightEffectBehaviour, StretchBehaviour, TemperatureBehaviour, MoveToPointBehaviour, Wireframe3DBehaviour, BehaviourNames, } from './lib/behaviour';
|
|
21
|
+
export { Behaviour, BehaviourRegistry, EmitterBehaviours, SpawnBehaviour, LifeBehaviour, PositionBehaviour, ColorBehaviour, SizeBehaviour, AngularVelocityBehaviour, EmitDirectionBehaviour, RotationBehaviour, TurbulenceBehaviour, CollisionBehaviour, AttractionRepulsionBehaviour, NoiseBasedMotionBehaviour, ForceFieldsBehaviour, TimelineBehaviour, GroupingBehaviour, SoundReactiveBehaviour, LightEffectBehaviour, StretchBehaviour, TemperatureBehaviour, MoveToPointBehaviour, FormPatternBehaviour, type FormPatternMode, type FormPatternProgressMode, type FormPatternAssignmentMode, type FormPatternBakedPolylineMode, type FormPatternPathKind, type FormPatternSinePhaseMode, type FormPatternStaggerOrder, type FormPatternPathVarietySeedMode, type FormPatternVisualModulation, Wireframe3DBehaviour, ToroidalWrapBehaviour, BehaviourNames, } from './lib/behaviour';
|
|
22
|
+
export { rasterizeTextToPoints, buildPresetShape, matchPointsToCount, resampleToCount, flattenSvgPathToPoints, assignGreedyNearest, assignByPolarAngle, assignHungarian, hungarianMinAssignment, assignHungarianTargetIndices, assignGreedyNearestTargetIndices, assignByPolarAngleTargetIndices, sortTargetIndicesByAngle, blendMorphedPresets, rasterizeOpaquePixelsToPoints, rasterizeOpaquePixelsToPointsWithColors, matchSamplesToCount, sortPointsByAngle, shuffledIndices, seededUnit, extractSvgPathDFromMarkup, parseSvgViewBox, normalizePointsToBounds, replicatePointsByWeights, sampleMorphKeyframes, assignPathOrderTargetIndices, rasterizeOpaquePixelsToPointsWeighted, rasterizeOpaquePixelsToPointsWithColorsWeighted, } from './lib/util/formPatternSampling';
|
|
23
|
+
export type { PresetShapeType, PresetShapeParams, TextRasterMode, RasterizeTextOptions, PointRgb, MorphKeyframe, IParticleXYWithUid, } from './lib/util/formPatternSampling';
|
|
24
|
+
export { PersistentFillEmission } from './lib/emission';
|
|
25
|
+
export { PersistentWrapEmitter } from './lib/emitter';
|
|
20
26
|
export { Application, Assets } from 'pixi.js';
|
|
21
|
-
export { Renderer, customPixiParticles, _customPixiParticlesEditorOnly, ICustomPixiParticlesSettings, ShatterEffect, DissolveEffect, MagneticAssemblyEffect, GhostEffect, GlitchEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, CrystallizeEffect, SlitScanEffect, GranularErosionEffect, LiquidMercuryEffect, };
|
|
27
|
+
export { Renderer, customPixiParticles, _customPixiParticlesEditorOnly, ICustomPixiParticlesSettings, ShatterEffect, DissolveEffect, MagneticAssemblyEffect, GhostEffect, GlitchEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, CrystallizeEffect, SlitScanEffect, GranularErosionEffect, LiquidMercuryEffect, MetaballPass, };
|
package/dist/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import Renderer from './lib/pixi/Renderer';
|
|
2
2
|
import TestRenderer from './lib/pixi/TestRenderer';
|
|
3
|
-
import { CrystallizeEffect, DissolveEffect, GhostEffect, GlitchEffect, GranularErosionEffect, LiquidMercuryEffect, MagneticAssemblyEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, ShatterEffect, SlitScanEffect, } from './lib/effects';
|
|
3
|
+
import { CrystallizeEffect, DissolveEffect, GhostEffect, GlitchEffect, GranularErosionEffect, LiquidMercuryEffect, MagneticAssemblyEffect, MetaballPass, MeltEffect, PixelSortEffect, PrismRefractionEffect, ShatterEffect, SlitScanEffect, } from './lib/effects';
|
|
4
4
|
import { Container, extensions, FederatedContainer, Graphics } from 'pixi.js';
|
|
5
5
|
// Pixi applies FederatedContainer in events/init after async browser extension load; creating
|
|
6
6
|
// particle containers before that runs leaves isInteractive() missing on Container.prototype.
|
|
@@ -13,7 +13,7 @@ extensions.mixin(Container, FederatedContainer);
|
|
|
13
13
|
const customPixiParticles = {
|
|
14
14
|
create(settings) {
|
|
15
15
|
var _a;
|
|
16
|
-
const { textures, emitterConfig, animatedSpriteZeroPad = 2, animatedSpriteIndexToStart = 0, finishingTextures = [], vertices = true, position = true, rotation = true, uvs = true, tint = true, maxParticles = 10000, maxFPS = 60, minFPS = 30, tickerSpeed = 0.02, } = settings;
|
|
16
|
+
const { textures, emitterConfig, animatedSpriteZeroPad = 2, animatedSpriteIndexToStart = 0, finishingTextures = [], vertices = true, position = true, rotation = true, uvs = true, tint = true, maxParticles = 10000, maxFPS = 60, minFPS = 30, tickerSpeed = 0.02, particleLinks, canvasSizeProvider, } = settings;
|
|
17
17
|
const hasWireframe = (_a = emitterConfig === null || emitterConfig === void 0 ? void 0 : emitterConfig.behaviours) === null || _a === void 0 ? void 0 : _a.some((b) => b.name === 'Wireframe3DBehaviour');
|
|
18
18
|
const renderer = new Renderer({
|
|
19
19
|
textures,
|
|
@@ -30,6 +30,8 @@ const customPixiParticles = {
|
|
|
30
30
|
maxFPS,
|
|
31
31
|
minFPS,
|
|
32
32
|
tickerSpeed,
|
|
33
|
+
particleLinks,
|
|
34
|
+
canvasSizeProvider,
|
|
33
35
|
});
|
|
34
36
|
if (hasWireframe) {
|
|
35
37
|
const graphics = new Graphics();
|
|
@@ -48,6 +50,7 @@ const customPixiParticles = {
|
|
|
48
50
|
container.start = () => renderer.start();
|
|
49
51
|
container.setTickerSpeed = (s) => renderer.setTickerSpeed(s);
|
|
50
52
|
container.updateTexture = () => renderer.updateTexture();
|
|
53
|
+
container.setParticleLinks = (p) => renderer.setParticleLinks(p);
|
|
51
54
|
const origDestroy = container.destroy.bind(container);
|
|
52
55
|
container.destroy = () => {
|
|
53
56
|
renderer.destroy();
|
|
@@ -60,7 +63,7 @@ const customPixiParticles = {
|
|
|
60
63
|
};
|
|
61
64
|
const _customPixiParticlesEditorOnly = {
|
|
62
65
|
create(settings) {
|
|
63
|
-
const { textures, emitterConfig, animatedSpriteZeroPad = 2, animatedSpriteIndexToStart = 0, finishingTextures = [], maxFPS = 60, minFPS = 60, tickerSpeed = 0.02, } = settings;
|
|
66
|
+
const { textures, emitterConfig, animatedSpriteZeroPad = 2, animatedSpriteIndexToStart = 0, finishingTextures = [], maxFPS = 60, minFPS = 60, tickerSpeed = 0.02, particleLinks, canvasSizeProvider, } = settings;
|
|
64
67
|
return new TestRenderer({
|
|
65
68
|
textures,
|
|
66
69
|
animatedSpriteZeroPad,
|
|
@@ -70,11 +73,17 @@ const _customPixiParticlesEditorOnly = {
|
|
|
70
73
|
maxFPS,
|
|
71
74
|
minFPS,
|
|
72
75
|
tickerSpeed,
|
|
76
|
+
particleLinks,
|
|
77
|
+
canvasSizeProvider,
|
|
73
78
|
});
|
|
74
79
|
},
|
|
75
80
|
};
|
|
76
|
-
export {
|
|
81
|
+
export { drawParticleLinks, mergeParticleLinkSettings, PARTICLE_LINK_DEFAULTS, } from './lib/pixi/particleLinkLayer';
|
|
82
|
+
export { Behaviour, BehaviourRegistry, EmitterBehaviours, SpawnBehaviour, LifeBehaviour, PositionBehaviour, ColorBehaviour, SizeBehaviour, AngularVelocityBehaviour, EmitDirectionBehaviour, RotationBehaviour, TurbulenceBehaviour, CollisionBehaviour, AttractionRepulsionBehaviour, NoiseBasedMotionBehaviour, ForceFieldsBehaviour, TimelineBehaviour, GroupingBehaviour, SoundReactiveBehaviour, LightEffectBehaviour, StretchBehaviour, TemperatureBehaviour, MoveToPointBehaviour, FormPatternBehaviour, Wireframe3DBehaviour, ToroidalWrapBehaviour, BehaviourNames, } from './lib/behaviour';
|
|
83
|
+
export { rasterizeTextToPoints, buildPresetShape, matchPointsToCount, resampleToCount, flattenSvgPathToPoints, assignGreedyNearest, assignByPolarAngle, assignHungarian, hungarianMinAssignment, assignHungarianTargetIndices, assignGreedyNearestTargetIndices, assignByPolarAngleTargetIndices, sortTargetIndicesByAngle, blendMorphedPresets, rasterizeOpaquePixelsToPoints, rasterizeOpaquePixelsToPointsWithColors, matchSamplesToCount, sortPointsByAngle, shuffledIndices, seededUnit, extractSvgPathDFromMarkup, parseSvgViewBox, normalizePointsToBounds, replicatePointsByWeights, sampleMorphKeyframes, assignPathOrderTargetIndices, rasterizeOpaquePixelsToPointsWeighted, rasterizeOpaquePixelsToPointsWithColorsWeighted, } from './lib/util/formPatternSampling';
|
|
84
|
+
export { PersistentFillEmission } from './lib/emission';
|
|
85
|
+
export { PersistentWrapEmitter } from './lib/emitter';
|
|
77
86
|
// Re-export so demos can use one import (avoids loading Pixi twice)
|
|
78
87
|
export { Application, Assets } from 'pixi.js';
|
|
79
|
-
export { Renderer, customPixiParticles, _customPixiParticlesEditorOnly, ShatterEffect, DissolveEffect, MagneticAssemblyEffect, GhostEffect, GlitchEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, CrystallizeEffect, SlitScanEffect, GranularErosionEffect, LiquidMercuryEffect, };
|
|
88
|
+
export { Renderer, customPixiParticles, _customPixiParticlesEditorOnly, ShatterEffect, DissolveEffect, MagneticAssemblyEffect, GhostEffect, GlitchEffect, MeltEffect, PixelSortEffect, PrismRefractionEffect, CrystallizeEffect, SlitScanEffect, GranularErosionEffect, LiquidMercuryEffect, MetaballPass, };
|
|
80
89
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAE1C,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE7E,8FAA8F;AAC9F,8FAA8F;AAC9F,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,qBAAqB,CAAA;AAE1C,OAAO,YAAY,MAAM,yBAAyB,CAAA;AAClD,OAAO,EACL,iBAAiB,EACjB,cAAc,EACd,WAAW,EACX,YAAY,EACZ,qBAAqB,EACrB,mBAAmB,EACnB,sBAAsB,EACtB,YAAY,EACZ,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,aAAa,EACb,cAAc,GACf,MAAM,eAAe,CAAA;AACtB,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAE7E,8FAA8F;AAC9F,8FAA8F;AAC9F,UAAU,CAAC,KAAK,CAAC,SAAS,EAAE,kBAAkB,CAAC,CAAA;AA0B/C;;;;GAIG;AACH,MAAM,mBAAmB,GAAG;IAC1B,MAAM,CAAC,QAAsC;;QAC3C,MAAM,EACJ,QAAQ,EACR,aAAa,EACb,qBAAqB,GAAG,CAAC,EACzB,0BAA0B,GAAG,CAAC,EAC9B,iBAAiB,GAAG,EAAE,EACtB,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,IAAI,EACf,QAAQ,GAAG,IAAI,EACf,GAAG,GAAG,IAAI,EACV,IAAI,GAAG,IAAI,EACX,YAAY,GAAG,KAAK,EACpB,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,WAAW,GAAG,IAAI,EAClB,aAAa,EACb,kBAAkB,GACnB,GAAG,QAAQ,CAAA;QACZ,MAAM,YAAY,GAAG,MAAA,aAAa,aAAb,aAAa,uBAAb,aAAa,CAAE,UAAU,0CAAE,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,sBAAsB,CAAC,CAAA;QACnG,MAAM,QAAQ,GAAG,IAAI,QAAQ,CAAC;YAC5B,QAAQ;YACR,qBAAqB;YACrB,0BAA0B;YAC1B,aAAa;YACb,iBAAiB;YACjB,QAAQ;YACR,QAAQ;YACR,QAAQ;YACR,GAAG;YACH,IAAI;YACJ,YAAY;YACZ,MAAM;YACN,MAAM;YACN,WAAW;YACX,aAAa;YACb,kBAAkB;SACnB,CAAC,CAAA;QACF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAA;YAC/B,MAAM,SAAS,GAAG,IAAI,SAAS,EAAS,CAAA;YACxC,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC5B,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAA;YAC5B,QAAQ,CAAC,iBAAiB,GAAG,QAAQ,CAAA;YACrC,MAAM,CAAC,cAAc,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAA;YAC5E,SAAS,CAAC,YAAY,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;YAC7D,SAAS,CAAC,cAAc,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;YACjE,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;YACtC,SAAS,CAAC,IAAI,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAA;YACtC,SAAS,CAAC,eAAe,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAA;YAC5D,SAAS,CAAC,KAAK,GAAG,CAAC,CAAW,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAA;YACpD,SAAS,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAA;YAC1C,SAAS,CAAC,KAAK,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;YACxC,SAAS,CAAC,cAAc,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;YACpE,SAAS,CAAC,aAAa,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAA;YACxD,SAAS,CAAC,gBAAgB,GAAG,CAAC,CAAM,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAA;YACrE,MAAM,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACrD,SAAS,CAAC,OAAO,GAAG,GAAG,EAAE;gBACvB,QAAQ,CAAC,OAAO,EAAE,CAAA;gBAClB,WAAW,EAAE,CAAA;YACf,CAAC,CAAA;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;QACD,OAAO,QAAQ,CAAA;IACjB,CAAC;CACF,CAAA;AAED,MAAM,8BAA8B,GAAG;IACrC,MAAM,CAAC,QAAsC;QAC3C,MAAM,EACJ,QAAQ,EACR,aAAa,EACb,qBAAqB,GAAG,CAAC,EACzB,0BAA0B,GAAG,CAAC,EAC9B,iBAAiB,GAAG,EAAE,EACtB,MAAM,GAAG,EAAE,EACX,MAAM,GAAG,EAAE,EACX,WAAW,GAAG,IAAI,EAClB,aAAa,EACb,kBAAkB,GACnB,GAAG,QAAQ,CAAA;QACZ,OAAO,IAAI,YAAY,CAAC;YACtB,QAAQ;YACR,qBAAqB;YACrB,0BAA0B;YAC1B,aAAa;YACb,iBAAiB;YACjB,MAAM;YACN,MAAM;YACN,WAAW;YACX,aAAa;YACb,kBAAkB;SACnB,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAID,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,sBAAsB,GACvB,MAAM,8BAA8B,CAAA;AAErC,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,cAAc,EACd,aAAa,EACb,wBAAwB,EACxB,sBAAsB,EACtB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,4BAA4B,EAC5B,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,gBAAgB,EAChB,oBAAoB,EACpB,oBAAoB,EACpB,oBAAoB,EAUpB,oBAAoB,EACpB,qBAAqB,EACrB,cAAc,GACf,MAAM,iBAAiB,CAAA;AAExB,OAAO,EACL,qBAAqB,EACrB,gBAAgB,EAChB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,mBAAmB,EACnB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,wBAAwB,EACxB,mBAAmB,EACnB,6BAA6B,EAC7B,uCAAuC,EACvC,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,UAAU,EACV,yBAAyB,EACzB,eAAe,EACf,uBAAuB,EACvB,wBAAwB,EACxB,oBAAoB,EACpB,4BAA4B,EAC5B,qCAAqC,EACrC,+CAA+C,GAChD,MAAM,gCAAgC,CAAA;AAWvC,OAAO,EAAE,sBAAsB,EAAE,MAAM,gBAAgB,CAAA;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAA;AAErD,oEAAoE;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,SAAS,CAAA;AAE7C,OAAO,EACL,QAAQ,EACR,mBAAmB,EACnB,8BAA8B,EAE9B,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,WAAW,EACX,YAAY,EACZ,UAAU,EACV,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,YAAY,GACb,CAAA"}
|
package/dist/lib/Model.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
export default class Model {
|
|
2
|
+
/**
|
|
3
|
+
* Refreshed each frame by Renderer/TestRenderer when ToroidalWrapBehaviour uses canvas bounds.
|
|
4
|
+
* Particle space origin at emitter center; half-width = width/2 (matches Pixi render buffer).
|
|
5
|
+
*/
|
|
6
|
+
toroidalCanvasBounds: {
|
|
7
|
+
minX: number;
|
|
8
|
+
maxX: number;
|
|
9
|
+
minY: number;
|
|
10
|
+
maxY: number;
|
|
11
|
+
} | null;
|
|
2
12
|
/**
|
|
3
13
|
* Boolean value indicating whether warping is enabled
|
|
4
14
|
*/
|
|
@@ -29,4 +39,7 @@ export default class Model {
|
|
|
29
39
|
* @param {number} deltaTime - The delta time
|
|
30
40
|
*/
|
|
31
41
|
updateCamera(deltaTime: number): void;
|
|
42
|
+
/** Sets {@link toroidalCanvasBounds} from render buffer size (centered rect). */
|
|
43
|
+
setToroidalCanvasBoundsFromSize(width: number, height: number): void;
|
|
44
|
+
clearToroidalCanvasBounds(): void;
|
|
32
45
|
}
|
package/dist/lib/Model.js
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
export default class Model {
|
|
2
2
|
constructor() {
|
|
3
|
+
/**
|
|
4
|
+
* Refreshed each frame by Renderer/TestRenderer when ToroidalWrapBehaviour uses canvas bounds.
|
|
5
|
+
* Particle space origin at emitter center; half-width = width/2 (matches Pixi render buffer).
|
|
6
|
+
*/
|
|
7
|
+
this.toroidalCanvasBounds = null;
|
|
3
8
|
/**
|
|
4
9
|
* Boolean value indicating whether warping is enabled
|
|
5
10
|
*/
|
|
@@ -40,5 +45,14 @@ export default class Model {
|
|
|
40
45
|
return;
|
|
41
46
|
this.cameraZ += deltaTime * this.cameraZConverter * this.warpSpeed * this.warpBaseSpeed;
|
|
42
47
|
}
|
|
48
|
+
/** Sets {@link toroidalCanvasBounds} from render buffer size (centered rect). */
|
|
49
|
+
setToroidalCanvasBoundsFromSize(width, height) {
|
|
50
|
+
const hw = width / 2;
|
|
51
|
+
const hh = height / 2;
|
|
52
|
+
this.toroidalCanvasBounds = { minX: -hw, maxX: hw, minY: -hh, maxY: hh };
|
|
53
|
+
}
|
|
54
|
+
clearToroidalCanvasBounds() {
|
|
55
|
+
this.toroidalCanvasBounds = null;
|
|
56
|
+
}
|
|
43
57
|
}
|
|
44
58
|
//# sourceMappingURL=Model.js.map
|
package/dist/lib/Model.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/lib/Model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;IAA1B;QACE;;WAEG;QACH,SAAI,GAAY,KAAK,CAAA;QAErB;;WAEG;QACH,YAAO,GAAW,CAAC,CAAA;QAEnB;;WAEG;QACH,qBAAgB,GAAW,CAAC,CAAA;QAE5B;;WAEG;QACH,cAAS,GAAW,CAAC,CAAA;QAErB;;WAEG;QACH,kBAAa,GAAW,CAAC,CAAA;
|
|
1
|
+
{"version":3,"file":"Model.js","sourceRoot":"","sources":["../../src/lib/Model.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,OAAO,OAAO,KAAK;IAA1B;QACE;;;WAGG;QACH,yBAAoB,GAKT,IAAI,CAAA;QAEf;;WAEG;QACH,SAAI,GAAY,KAAK,CAAA;QAErB;;WAEG;QACH,YAAO,GAAW,CAAC,CAAA;QAEnB;;WAEG;QACH,qBAAgB,GAAW,CAAC,CAAA;QAE5B;;WAEG;QACH,cAAS,GAAW,CAAC,CAAA;QAErB;;WAEG;QACH,kBAAa,GAAW,CAAC,CAAA;IAgC3B,CAAC;IA9BC;;;OAGG;IACH,MAAM,CAAC,SAAc;QACnB,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,IAAI,KAAK,CAAA;QACnC,IAAI,CAAC,gBAAgB,GAAG,SAAS,CAAC,gBAAgB,CAAA;QAClD,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAA;QACpC,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC,aAAa,CAAA;IAC9C,CAAC;IAED;;;OAGG;IACH,YAAY,CAAC,SAAiB;QAC5B,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAM;QACtB,IAAI,CAAC,OAAO,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAA;IACzF,CAAC;IAED,iFAAiF;IACjF,+BAA+B,CAAC,KAAa,EAAE,MAAc;QAC3D,MAAM,EAAE,GAAG,KAAK,GAAG,CAAC,CAAA;QACpB,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC,oBAAoB,GAAG,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,CAAA;IAC1E,CAAC;IAED,yBAAyB;QACvB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAA;IAClC,CAAC;CACF"}
|
package/dist/lib/Particle.d.ts
CHANGED
|
@@ -216,6 +216,66 @@ export default class Particle {
|
|
|
216
216
|
moveToPointInitialY: number;
|
|
217
217
|
moveToPointTotalDistance: number;
|
|
218
218
|
moveToPointAccumulatedLinearDistance: number;
|
|
219
|
+
/** FormPatternBehaviour: mutually exclusive with MoveToPointBehaviour for predictable motion */
|
|
220
|
+
formPatternTargetX: number;
|
|
221
|
+
formPatternTargetY: number;
|
|
222
|
+
formPatternInitialX: number;
|
|
223
|
+
formPatternInitialY: number;
|
|
224
|
+
formPatternTotalDistance: number;
|
|
225
|
+
formPatternAccumulatedLinearDistance: number;
|
|
226
|
+
formPatternPathTime: number;
|
|
227
|
+
formPatternAssigned: boolean;
|
|
228
|
+
/** Delay before motion along the chord starts (seconds remaining) */
|
|
229
|
+
formPatternStaggerRemaining: number;
|
|
230
|
+
/** Per-particle speed multiplier (Form Pattern) */
|
|
231
|
+
formPatternSpeedMul: number;
|
|
232
|
+
/** Sine path phase offset (radians) */
|
|
233
|
+
formPatternSinPhase: number;
|
|
234
|
+
/** Hold at target after arrival (seconds remaining) */
|
|
235
|
+
formPatternLingerRemaining: number;
|
|
236
|
+
/** Local-space pattern target (for liveFormationTransform) */
|
|
237
|
+
formPatternLocalX: number;
|
|
238
|
+
formPatternLocalY: number;
|
|
239
|
+
/** Scales path deviations (arc, spiral, sine, noise) */
|
|
240
|
+
formPatternPathMul: number;
|
|
241
|
+
/** springSeek integration */
|
|
242
|
+
formPatternSpringVx: number;
|
|
243
|
+
formPatternSpringVy: number;
|
|
244
|
+
/**
|
|
245
|
+
* Snapshot before FormPattern image tint (for imageRestoreOriginalColorOnDeactivate).
|
|
246
|
+
*/
|
|
247
|
+
formPatternColorBackup: {
|
|
248
|
+
cr: number;
|
|
249
|
+
cg: number;
|
|
250
|
+
cb: number;
|
|
251
|
+
ca: number;
|
|
252
|
+
sr: number;
|
|
253
|
+
sg: number;
|
|
254
|
+
sb: number;
|
|
255
|
+
sa: number;
|
|
256
|
+
er: number;
|
|
257
|
+
eg: number;
|
|
258
|
+
eb: number;
|
|
259
|
+
ea: number;
|
|
260
|
+
} | null;
|
|
261
|
+
/** imageBitmap: lerp color from→to when imageColorBlendDurationMs > 0 */
|
|
262
|
+
formPatternImageColorBlendActive: boolean;
|
|
263
|
+
formPatternImageColorBlendElapsed: number;
|
|
264
|
+
formPatternImageBlendFr: number;
|
|
265
|
+
formPatternImageBlendFg: number;
|
|
266
|
+
formPatternImageBlendFb: number;
|
|
267
|
+
formPatternImageBlendTr: number;
|
|
268
|
+
formPatternImageBlendTg: number;
|
|
269
|
+
formPatternImageBlendTb: number;
|
|
270
|
+
/** Unit chord initial→target for overshoot */
|
|
271
|
+
formPatternChordUx: number;
|
|
272
|
+
formPatternChordUy: number;
|
|
273
|
+
/** -1 = not overshooting; 0–1 = overshoot phase progress */
|
|
274
|
+
formPatternOvershootT: number;
|
|
275
|
+
formPatternVisBaseAlpha: number;
|
|
276
|
+
formPatternVisBaseSizeX: number;
|
|
277
|
+
formPatternVisBaseSizeY: number;
|
|
278
|
+
formPatternVisualActive: boolean;
|
|
219
279
|
/**
|
|
220
280
|
* Constructs a particle object
|
|
221
281
|
*/
|
package/dist/lib/Particle.js
CHANGED
|
@@ -99,6 +99,53 @@ class Particle {
|
|
|
99
99
|
this.moveToPointInitialY = 0;
|
|
100
100
|
this.moveToPointTotalDistance = 0;
|
|
101
101
|
this.moveToPointAccumulatedLinearDistance = 0;
|
|
102
|
+
/** FormPatternBehaviour: mutually exclusive with MoveToPointBehaviour for predictable motion */
|
|
103
|
+
this.formPatternTargetX = 0;
|
|
104
|
+
this.formPatternTargetY = 0;
|
|
105
|
+
this.formPatternInitialX = 0;
|
|
106
|
+
this.formPatternInitialY = 0;
|
|
107
|
+
this.formPatternTotalDistance = 0;
|
|
108
|
+
this.formPatternAccumulatedLinearDistance = 0;
|
|
109
|
+
this.formPatternPathTime = 0;
|
|
110
|
+
this.formPatternAssigned = false;
|
|
111
|
+
/** Delay before motion along the chord starts (seconds remaining) */
|
|
112
|
+
this.formPatternStaggerRemaining = 0;
|
|
113
|
+
/** Per-particle speed multiplier (Form Pattern) */
|
|
114
|
+
this.formPatternSpeedMul = 1;
|
|
115
|
+
/** Sine path phase offset (radians) */
|
|
116
|
+
this.formPatternSinPhase = 0;
|
|
117
|
+
/** Hold at target after arrival (seconds remaining) */
|
|
118
|
+
this.formPatternLingerRemaining = 0;
|
|
119
|
+
/** Local-space pattern target (for liveFormationTransform) */
|
|
120
|
+
this.formPatternLocalX = 0;
|
|
121
|
+
this.formPatternLocalY = 0;
|
|
122
|
+
/** Scales path deviations (arc, spiral, sine, noise) */
|
|
123
|
+
this.formPatternPathMul = 1;
|
|
124
|
+
/** springSeek integration */
|
|
125
|
+
this.formPatternSpringVx = 0;
|
|
126
|
+
this.formPatternSpringVy = 0;
|
|
127
|
+
/**
|
|
128
|
+
* Snapshot before FormPattern image tint (for imageRestoreOriginalColorOnDeactivate).
|
|
129
|
+
*/
|
|
130
|
+
this.formPatternColorBackup = null;
|
|
131
|
+
/** imageBitmap: lerp color from→to when imageColorBlendDurationMs > 0 */
|
|
132
|
+
this.formPatternImageColorBlendActive = false;
|
|
133
|
+
this.formPatternImageColorBlendElapsed = 0;
|
|
134
|
+
this.formPatternImageBlendFr = 0;
|
|
135
|
+
this.formPatternImageBlendFg = 0;
|
|
136
|
+
this.formPatternImageBlendFb = 0;
|
|
137
|
+
this.formPatternImageBlendTr = 0;
|
|
138
|
+
this.formPatternImageBlendTg = 0;
|
|
139
|
+
this.formPatternImageBlendTb = 0;
|
|
140
|
+
/** Unit chord initial→target for overshoot */
|
|
141
|
+
this.formPatternChordUx = 1;
|
|
142
|
+
this.formPatternChordUy = 0;
|
|
143
|
+
/** -1 = not overshooting; 0–1 = overshoot phase progress */
|
|
144
|
+
this.formPatternOvershootT = -1;
|
|
145
|
+
this.formPatternVisBaseAlpha = 1;
|
|
146
|
+
this.formPatternVisBaseSizeX = 1;
|
|
147
|
+
this.formPatternVisBaseSizeY = 1;
|
|
148
|
+
this.formPatternVisualActive = false;
|
|
102
149
|
this.reset();
|
|
103
150
|
}
|
|
104
151
|
/**
|
|
@@ -181,6 +228,39 @@ class Particle {
|
|
|
181
228
|
this.moveToPointInitialY = 0;
|
|
182
229
|
this.moveToPointTotalDistance = 0;
|
|
183
230
|
this.moveToPointAccumulatedLinearDistance = 0;
|
|
231
|
+
this.formPatternTargetX = 0;
|
|
232
|
+
this.formPatternTargetY = 0;
|
|
233
|
+
this.formPatternInitialX = 0;
|
|
234
|
+
this.formPatternInitialY = 0;
|
|
235
|
+
this.formPatternTotalDistance = 0;
|
|
236
|
+
this.formPatternAccumulatedLinearDistance = 0;
|
|
237
|
+
this.formPatternPathTime = 0;
|
|
238
|
+
this.formPatternAssigned = false;
|
|
239
|
+
this.formPatternStaggerRemaining = 0;
|
|
240
|
+
this.formPatternSpeedMul = 1;
|
|
241
|
+
this.formPatternSinPhase = 0;
|
|
242
|
+
this.formPatternLingerRemaining = 0;
|
|
243
|
+
this.formPatternLocalX = 0;
|
|
244
|
+
this.formPatternLocalY = 0;
|
|
245
|
+
this.formPatternPathMul = 1;
|
|
246
|
+
this.formPatternSpringVx = 0;
|
|
247
|
+
this.formPatternSpringVy = 0;
|
|
248
|
+
this.formPatternColorBackup = null;
|
|
249
|
+
this.formPatternImageColorBlendActive = false;
|
|
250
|
+
this.formPatternImageColorBlendElapsed = 0;
|
|
251
|
+
this.formPatternImageBlendFr = 0;
|
|
252
|
+
this.formPatternImageBlendFg = 0;
|
|
253
|
+
this.formPatternImageBlendFb = 0;
|
|
254
|
+
this.formPatternImageBlendTr = 0;
|
|
255
|
+
this.formPatternImageBlendTg = 0;
|
|
256
|
+
this.formPatternImageBlendTb = 0;
|
|
257
|
+
this.formPatternChordUx = 1;
|
|
258
|
+
this.formPatternChordUy = 0;
|
|
259
|
+
this.formPatternOvershootT = -1;
|
|
260
|
+
this.formPatternVisBaseAlpha = 1;
|
|
261
|
+
this.formPatternVisBaseSizeX = 1;
|
|
262
|
+
this.formPatternVisBaseSizeY = 1;
|
|
263
|
+
this.formPatternVisualActive = false;
|
|
184
264
|
}
|
|
185
265
|
/**
|
|
186
266
|
* Checks if the particle is almost dead
|
package/dist/lib/Particle.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/lib/Particle.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AACrC,OAAO,SAAS,MAAM,kBAAkB,CAAA;AAExC;;GAEG;AACH,MAAqB,QAAQ;
|
|
1
|
+
{"version":3,"file":"Particle.js","sourceRoot":"","sources":["../../src/lib/Particle.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import Behaviour from './Behaviour';
|
|
2
|
+
import Particle from '../Particle';
|
|
3
|
+
import type Model from '../Model';
|
|
4
|
+
import type TurbulencePool from '../util/turbulencePool';
|
|
5
|
+
/**
|
|
6
|
+
* Lock phase to BPM; writes beatPhase01 for visuals and optional scale pulse.
|
|
7
|
+
*/
|
|
8
|
+
export default class BeatPhaseLockBehaviour extends Behaviour {
|
|
9
|
+
enabled: boolean;
|
|
10
|
+
/** After SizeBehaviour (0) so scale pulse is not overwritten each frame */
|
|
11
|
+
priority: number;
|
|
12
|
+
bpm: number;
|
|
13
|
+
phaseOffset: number;
|
|
14
|
+
lockStrength: number;
|
|
15
|
+
jitter: number;
|
|
16
|
+
harmonic: number;
|
|
17
|
+
writePhaseForVisual: boolean;
|
|
18
|
+
applyScalePulse: boolean;
|
|
19
|
+
scalePulseAmount: number;
|
|
20
|
+
private _time;
|
|
21
|
+
update: (deltaTime: number) => void;
|
|
22
|
+
init(particle: Particle, _model: Model, _turbulencePool: TurbulencePool): void;
|
|
23
|
+
apply(particle: Particle, _deltaTime: number, _model: Model): void;
|
|
24
|
+
getName(): string;
|
|
25
|
+
getProps(): Record<string, unknown>;
|
|
26
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import Behaviour from './Behaviour';
|
|
2
|
+
import BehaviourNames from './BehaviourNames';
|
|
3
|
+
/**
|
|
4
|
+
* Lock phase to BPM; writes beatPhase01 for visuals and optional scale pulse.
|
|
5
|
+
*/
|
|
6
|
+
export default class BeatPhaseLockBehaviour extends Behaviour {
|
|
7
|
+
constructor() {
|
|
8
|
+
super(...arguments);
|
|
9
|
+
this.enabled = true;
|
|
10
|
+
/** After SizeBehaviour (0) so scale pulse is not overwritten each frame */
|
|
11
|
+
this.priority = -35;
|
|
12
|
+
this.bpm = 120;
|
|
13
|
+
this.phaseOffset = 0;
|
|
14
|
+
this.lockStrength = 0.85;
|
|
15
|
+
this.jitter = 0.1;
|
|
16
|
+
this.harmonic = 1;
|
|
17
|
+
this.writePhaseForVisual = true;
|
|
18
|
+
this.applyScalePulse = false;
|
|
19
|
+
this.scalePulseAmount = 0.15;
|
|
20
|
+
this._time = 0;
|
|
21
|
+
this.update = (deltaTime) => {
|
|
22
|
+
this._time += deltaTime;
|
|
23
|
+
};
|
|
24
|
+
}
|
|
25
|
+
init(particle, _model, _turbulencePool) {
|
|
26
|
+
const p = particle;
|
|
27
|
+
p.beatPhaseOffset = (particle.uid % 97) * 0.01 * this.jitter;
|
|
28
|
+
}
|
|
29
|
+
apply(particle, _deltaTime, _model) {
|
|
30
|
+
if (!this.enabled)
|
|
31
|
+
return;
|
|
32
|
+
const p = particle;
|
|
33
|
+
const omega = ((Math.PI * 2 * this.bpm) / 60) * Math.max(1, this.harmonic);
|
|
34
|
+
const phase = omega * this._time + this.phaseOffset + (p.beatPhaseOffset || 0);
|
|
35
|
+
const base = Math.cos(phase);
|
|
36
|
+
const locked = base * this.lockStrength + (1 - this.lockStrength) * Math.sin(phase * 0.5 + p.beatPhaseOffset);
|
|
37
|
+
if (this.writePhaseForVisual) {
|
|
38
|
+
p.beatPhase01 = 0.5 + 0.5 * locked;
|
|
39
|
+
}
|
|
40
|
+
if (this.applyScalePulse) {
|
|
41
|
+
const m = 1 + this.scalePulseAmount * locked;
|
|
42
|
+
const lp = particle.lifeProgress;
|
|
43
|
+
const bx = particle.sizeStart.x + (particle.sizeEnd.x - particle.sizeStart.x) * lp;
|
|
44
|
+
const by = particle.sizeStart.y + (particle.sizeEnd.y - particle.sizeStart.y) * lp;
|
|
45
|
+
particle.size.x = bx * m;
|
|
46
|
+
particle.size.y = by * m;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
getName() {
|
|
50
|
+
return BehaviourNames.BEAT_PHASE_LOCK_BEHAVIOUR;
|
|
51
|
+
}
|
|
52
|
+
getProps() {
|
|
53
|
+
return {
|
|
54
|
+
enabled: this.enabled,
|
|
55
|
+
priority: this.priority,
|
|
56
|
+
bpm: this.bpm,
|
|
57
|
+
phaseOffset: this.phaseOffset,
|
|
58
|
+
lockStrength: this.lockStrength,
|
|
59
|
+
jitter: this.jitter,
|
|
60
|
+
harmonic: this.harmonic,
|
|
61
|
+
writePhaseForVisual: this.writePhaseForVisual,
|
|
62
|
+
applyScalePulse: this.applyScalePulse,
|
|
63
|
+
scalePulseAmount: this.scalePulseAmount,
|
|
64
|
+
name: this.getName(),
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=BeatPhaseLockBehaviour.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BeatPhaseLockBehaviour.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BeatPhaseLockBehaviour.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,7 @@ declare const behaviourNames: {
|
|
|
31
31
|
GRAVITY_WELL_BEHAVIOUR: string;
|
|
32
32
|
TRAIL_BEHAVIOUR: string;
|
|
33
33
|
BOUNCE_BEHAVIOUR: string;
|
|
34
|
+
TOROIDAL_WRAP_BEHAVIOUR: string;
|
|
34
35
|
HOMING_BEHAVIOUR: string;
|
|
35
36
|
FLOAT_UP_BEHAVIOUR: string;
|
|
36
37
|
MAGNET_BEHAVIOUR: string;
|
|
@@ -47,5 +48,15 @@ declare const behaviourNames: {
|
|
|
47
48
|
PROXIMITY_TRIGGERED_PHASE_BEHAVIOUR: string;
|
|
48
49
|
LISSAJOUS_HARMONIC_LATTICE_BEHAVIOUR: string;
|
|
49
50
|
JACOBIAN_CURL_FIELD_BEHAVIOUR: string;
|
|
51
|
+
SHEAR_FLOW_BEHAVIOUR: string;
|
|
52
|
+
OBSTACLE_SDF_STEER_BEHAVIOUR: string;
|
|
53
|
+
RVO_AVOIDANCE_BEHAVIOUR: string;
|
|
54
|
+
EMITTER_ATTRACTOR_LINK_BEHAVIOUR: string;
|
|
55
|
+
KELVIN_WAKE_BEHAVIOUR: string;
|
|
56
|
+
BEZIER_FLOW_TUBE_BEHAVIOUR: string;
|
|
57
|
+
SCREEN_SPACE_FLOW_MAP_BEHAVIOUR: string;
|
|
58
|
+
BEAT_PHASE_LOCK_BEHAVIOUR: string;
|
|
59
|
+
DAMAGE_FLASH_RIPPLE_BEHAVIOUR: string;
|
|
60
|
+
FORM_PATTERN_BEHAVIOUR: string;
|
|
50
61
|
};
|
|
51
62
|
export default behaviourNames;
|
|
@@ -31,6 +31,7 @@ const behaviourNames = {
|
|
|
31
31
|
GRAVITY_WELL_BEHAVIOUR: 'GravityWellBehaviour',
|
|
32
32
|
TRAIL_BEHAVIOUR: 'TrailBehaviour',
|
|
33
33
|
BOUNCE_BEHAVIOUR: 'BounceBehaviour',
|
|
34
|
+
TOROIDAL_WRAP_BEHAVIOUR: 'ToroidalWrapBehaviour',
|
|
34
35
|
HOMING_BEHAVIOUR: 'HomingBehaviour',
|
|
35
36
|
FLOAT_UP_BEHAVIOUR: 'FloatUpBehaviour',
|
|
36
37
|
MAGNET_BEHAVIOUR: 'MagnetBehaviour',
|
|
@@ -47,6 +48,16 @@ const behaviourNames = {
|
|
|
47
48
|
PROXIMITY_TRIGGERED_PHASE_BEHAVIOUR: 'ProximityTriggeredPhaseBehaviour',
|
|
48
49
|
LISSAJOUS_HARMONIC_LATTICE_BEHAVIOUR: 'LissajousHarmonicLatticeBehaviour',
|
|
49
50
|
JACOBIAN_CURL_FIELD_BEHAVIOUR: 'JacobianCurlFieldBehaviour',
|
|
51
|
+
SHEAR_FLOW_BEHAVIOUR: 'ShearFlowBehaviour',
|
|
52
|
+
OBSTACLE_SDF_STEER_BEHAVIOUR: 'ObstacleSDFSteerBehaviour',
|
|
53
|
+
RVO_AVOIDANCE_BEHAVIOUR: 'RVOAvoidanceBehaviour',
|
|
54
|
+
EMITTER_ATTRACTOR_LINK_BEHAVIOUR: 'EmitterAttractorLinkBehaviour',
|
|
55
|
+
KELVIN_WAKE_BEHAVIOUR: 'KelvinWakeBehaviour',
|
|
56
|
+
BEZIER_FLOW_TUBE_BEHAVIOUR: 'BezierFlowTubeBehaviour',
|
|
57
|
+
SCREEN_SPACE_FLOW_MAP_BEHAVIOUR: 'ScreenSpaceFlowMapBehaviour',
|
|
58
|
+
BEAT_PHASE_LOCK_BEHAVIOUR: 'BeatPhaseLockBehaviour',
|
|
59
|
+
DAMAGE_FLASH_RIPPLE_BEHAVIOUR: 'DamageFlashRippleBehaviour',
|
|
60
|
+
FORM_PATTERN_BEHAVIOUR: 'FormPatternBehaviour',
|
|
50
61
|
};
|
|
51
62
|
export default behaviourNames;
|
|
52
63
|
//# sourceMappingURL=BehaviourNames.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BehaviourNames.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BehaviourNames.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,0BAA0B;IAC7C,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,wBAAwB;IACxC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,8BAA8B,EAAE,8BAA8B;IAC9D,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,kBAAkB,EAAE,mBAAmB;IACvC,wBAAwB,EAAE,wBAAwB;IAClD,sBAAsB,EAAE,sBAAsB;IAC9C,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,sBAAsB;IAC7C,uBAAuB,EAAE,sBAAsB;IAC/C,sBAAsB,EAAE,sBAAsB;IAC9C,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,kBAAkB;IACrC,gBAAgB,EAAE,iBAAiB;IACnC,qBAAqB,EAAE,qBAAqB;IAC5C,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,gBAAgB,EAAE,iBAAiB;IACnC,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,iBAAiB;IACnC,8BAA8B,EAAE,6BAA6B;IAC7D,4BAA4B,EAAE,4BAA4B;IAC1D,wBAAwB,EAAE,wBAAwB;IAClD,yBAAyB,EAAE,yBAAyB;IACpD,0BAA0B,EAAE,yBAAyB;IACrD,yBAAyB,EAAE,yBAAyB;IACpD,wBAAwB,EAAE,wBAAwB;IAClD,qBAAqB,EAAE,qBAAqB;IAC5C,0BAA0B,EAAE,0BAA0B;IACtD,uBAAuB,EAAE,uBAAuB;IAChD,mCAAmC,EAAE,kCAAkC;IACvE,oCAAoC,EAAE,mCAAmC;IACzE,6BAA6B,EAAE,4BAA4B;
|
|
1
|
+
{"version":3,"file":"BehaviourNames.js","sourceRoot":"","sources":["../../../src/lib/behaviour/BehaviourNames.ts"],"names":[],"mappings":"AAAA,MAAM,cAAc,GAAG;IACrB,iBAAiB,EAAE,0BAA0B;IAC7C,cAAc,EAAE,eAAe;IAC/B,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,cAAc,EAAE,eAAe;IAC/B,cAAc,EAAE,wBAAwB;IACxC,kBAAkB,EAAE,mBAAmB;IACvC,oBAAoB,EAAE,qBAAqB;IAC3C,mBAAmB,EAAE,oBAAoB;IACzC,8BAA8B,EAAE,8BAA8B;IAC9D,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,kBAAkB,EAAE,mBAAmB;IACvC,kBAAkB,EAAE,mBAAmB;IACvC,wBAAwB,EAAE,wBAAwB;IAClD,sBAAsB,EAAE,sBAAsB;IAC9C,iBAAiB,EAAE,kBAAkB;IACrC,qBAAqB,EAAE,sBAAsB;IAC7C,uBAAuB,EAAE,sBAAsB;IAC/C,sBAAsB,EAAE,sBAAsB;IAC9C,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,eAAe,EAAE,gBAAgB;IACjC,iBAAiB,EAAE,kBAAkB;IACrC,gBAAgB,EAAE,iBAAiB;IACnC,qBAAqB,EAAE,qBAAqB;IAC5C,4BAA4B,EAAE,2BAA2B;IACzD,sBAAsB,EAAE,sBAAsB;IAC9C,eAAe,EAAE,gBAAgB;IACjC,gBAAgB,EAAE,iBAAiB;IACnC,uBAAuB,EAAE,uBAAuB;IAChD,gBAAgB,EAAE,iBAAiB;IACnC,kBAAkB,EAAE,kBAAkB;IACtC,gBAAgB,EAAE,iBAAiB;IACnC,8BAA8B,EAAE,6BAA6B;IAC7D,4BAA4B,EAAE,4BAA4B;IAC1D,wBAAwB,EAAE,wBAAwB;IAClD,yBAAyB,EAAE,yBAAyB;IACpD,0BAA0B,EAAE,yBAAyB;IACrD,yBAAyB,EAAE,yBAAyB;IACpD,wBAAwB,EAAE,wBAAwB;IAClD,qBAAqB,EAAE,qBAAqB;IAC5C,0BAA0B,EAAE,0BAA0B;IACtD,uBAAuB,EAAE,uBAAuB;IAChD,mCAAmC,EAAE,kCAAkC;IACvE,oCAAoC,EAAE,mCAAmC;IACzE,6BAA6B,EAAE,4BAA4B;IAC3D,oBAAoB,EAAE,oBAAoB;IAC1C,4BAA4B,EAAE,2BAA2B;IACzD,uBAAuB,EAAE,uBAAuB;IAChD,gCAAgC,EAAE,+BAA+B;IACjE,qBAAqB,EAAE,qBAAqB;IAC5C,0BAA0B,EAAE,yBAAyB;IACrD,+BAA+B,EAAE,6BAA6B;IAC9D,yBAAyB,EAAE,wBAAwB;IACnD,6BAA6B,EAAE,4BAA4B;IAC3D,sBAAsB,EAAE,sBAAsB;CAC/C,CAAA;AAED,eAAe,cAAc,CAAA"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import Behaviour from './Behaviour';
|
|
2
|
+
import Particle from '../Particle';
|
|
3
|
+
import type Model from '../Model';
|
|
4
|
+
import type TurbulencePool from '../util/turbulencePool';
|
|
5
|
+
type Pt = {
|
|
6
|
+
x: number;
|
|
7
|
+
y: number;
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Drift along a cubic Bezier tube with lateral noise; arc-length parameter stored per particle.
|
|
11
|
+
*/
|
|
12
|
+
export default class BezierFlowTubeBehaviour extends Behaviour {
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
/** After PositionBehaviour integration so curve position wins (same idea as Jacobian curl). */
|
|
15
|
+
priority: number;
|
|
16
|
+
/** Four control points P0..P3 */
|
|
17
|
+
p0: Pt;
|
|
18
|
+
p1: Pt;
|
|
19
|
+
p2: Pt;
|
|
20
|
+
p3: Pt;
|
|
21
|
+
speed: number;
|
|
22
|
+
noiseAmp: number;
|
|
23
|
+
loop: boolean;
|
|
24
|
+
alignRotation: boolean;
|
|
25
|
+
private _noise2D;
|
|
26
|
+
constructor();
|
|
27
|
+
init(particle: Particle, _model: Model, _turbulencePool: TurbulencePool): void;
|
|
28
|
+
private bezier;
|
|
29
|
+
apply(particle: Particle, deltaTime: number, _model: Model): void;
|
|
30
|
+
getName(): string;
|
|
31
|
+
getProps(): Record<string, unknown>;
|
|
32
|
+
}
|
|
33
|
+
export {};
|