@hology/core 0.0.162 → 0.0.163

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.
@@ -1,3 +1,4 @@
1
+ import { Vector3 } from "three";
1
2
  import { Behaviour, Emitter, Particle } from "@hology/nebula";
2
3
  import * as THREE from 'three';
3
4
  export type EasingFunction = (x: number) => number;
@@ -41,6 +42,16 @@ export declare class Scale extends Behaviour {
41
42
  initialize(particle: Particle): void;
42
43
  mutate(target: Particle | Emitter, time: number, index: number): void;
43
44
  }
45
+ export declare class ScaleComponents extends Behaviour {
46
+ private scaleA;
47
+ private scaleB;
48
+ constructor(scaleA: Vector3, scaleB: Vector3, easing: EasingFunction);
49
+ /**
50
+ * Set the behaviour's initial properties on the particle.
51
+ */
52
+ initialize(particle: Particle): void;
53
+ mutate(target: Particle | Emitter, time: number, index: number): void;
54
+ }
44
55
  export declare class LinearDamping extends Behaviour {
45
56
  private factor;
46
57
  constructor(factor: number);
@@ -1,4 +1,4 @@
1
- import{Vector3 as i}from"three";import{Behaviour as t,Vector3D as s,ease as e,MathUtils as o}from"@hology/nebula";import*as n from"three";export class RotatePosition extends t{constructor(i,t){super(),this.axis=i,this.angle=t,this.axis3D=new s(this.axis.x,this.axis.y,this.axis.z)}mutate(i,t,s){this.energize(i,t),null!=i.old&&0!=i.old.position.lengthSq()&&(a.copy(i.old.position),a.sub(i.parent.position),a.applyAxisAngle(this.axis3D,this.angle*t),a.add(i.parent.position),a.sub(i.old.position).divideScalar(t),i.velocity.sub(a)),a.copy(i.position),a.sub(i.parent.position),a.applyAxisAngle(this.axis3D,this.angle*t),a.add(i.parent.position),a.sub(i.position).divideScalar(t),i.velocity.add(a)}}const a=new i;export var AxisDirection;!function(i){i[i.x=0]="x",i[i.y=1]="y",i[i.z=2]="z",i[i.mx=3]="mx",i[i.my=4]="my",i[i.mz=5]="mz"}(AxisDirection||(AxisDirection={}));export class OrientAlongVelocity extends t{constructor(i){super(),this.axisDirection=i}initialize(i){i.transform.orientAlongVelocity=!0}mutate(i,t,s){i.target,n.Object3D}}export class FollowParent extends t{constructor(i){super(),this.speed=i}initialize(i){}mutate(i,t,s){const e=i.parent.parentParticle??i.parent;if(0===this.speed)return i.position.copy(e.old.position),i.acceleration.copy(e.acceleration),void i.velocity.copy(e.velocity);const o=r.copy(e.position).sub(i.position),n=(o.length(),o.normalize());l.copy(n).multiplyScalar(this.speed),i.velocity.copy(l)}}export class Scale extends t{constructor(i,t,s){super(void 0,s),this.scaleA=i,this.scaleB=t}initialize(i){i.transform.scaleA=i.scale*this.scaleA,i.transform.scaleB=i.scale*this.scaleB,i.transform.oldRadius=i.radius}mutate(i,t,s){this.energize(i,t),i.scale=o.lerp(i.transform.scaleA,i.transform.scaleB,this.energy),i.scale<5e-4&&(i.scale=0),i.radius=i.transform.oldRadius*i.scale}}export class LinearDamping extends t{constructor(i){super(),this.factor=i}mutate(i,t,s){this.energize(i,t);const e=r.copy(i.velocity).multiplyScalar(-this.factor*t);i.velocity.add(e)}}const r=new s,l=new s;export var AxisPlane;!function(i){i[i.xy=0]="xy",i[i.xz=1]="xz",i[i.yz=2]="yz",i[i.xyz=3]="xyz"}(AxisPlane||(AxisPlane={}));export class Disperse extends t{constructor(i,t,s=e.easeLinear){super(void 0,s,void 0,!0),this.distance=i,this.plane=t}initialize(i){i.transform.initialPos=i.position.clone();const t=c.copy(i.transform.initialPos).sub(i.parent.position).normalize();switch(this.plane){case AxisPlane.xy:t.setComponent(2,0);break;case AxisPlane.xz:t.setComponent(1,0);break;case AxisPlane.yz:t.setComponent(0,0)}i.transform.displacement=t.clone().multiplyScalar(this.distance),i.transform.prevEnergy=1}mutate(i,t,s){this.energize(i,t);i.transform.initialPos;const e=i.transform.displacement,o=i.transform.prevEnergy-this.energy;i.transform.prevEnergy=this.energy;i.position.x+=e.x*o,i.position.y+=e.y*o,i.position.z+=e.z*o}}export class MoveOverLife extends t{constructor(i,t,s,o=e.easeLinear){super(void 0,o,void 0,!0),this.x=i,this.y=t,this.z=s}initialize(i){i.transform.initialPos=i.position.clone()}mutate(i,t,s){this.energize(i,t);const e=i.transform.initialPos,o=1-this.energy;i.position.x=e.x+this.x*o,i.position.y=e.y+this.y*o,i.position.z=e.z+this.z*o}}const c=new s;/*
1
+ import{Vector3 as t}from"three";import{Behaviour as i,Vector3D as s,ease as e,MathUtils as o}from"@hology/nebula";import*as n from"three";export class RotatePosition extends i{constructor(t,i){super(),this.axis=t,this.angle=i,this.axis3D=new s(this.axis.x,this.axis.y,this.axis.z)}mutate(t,i,s){this.energize(t,i),null!=t.old&&0!=t.old.position.lengthSq()&&(a.copy(t.old.position),a.sub(t.parent.position),a.applyAxisAngle(this.axis3D,this.angle*i),a.add(t.parent.position),a.sub(t.old.position).divideScalar(i),t.velocity.sub(a)),a.copy(t.position),a.sub(t.parent.position),a.applyAxisAngle(this.axis3D,this.angle*i),a.add(t.parent.position),a.sub(t.position).divideScalar(i),t.velocity.add(a)}}const a=new t;export var AxisDirection;!function(t){t[t.x=0]="x",t[t.y=1]="y",t[t.z=2]="z",t[t.mx=3]="mx",t[t.my=4]="my",t[t.mz=5]="mz"}(AxisDirection||(AxisDirection={}));export class OrientAlongVelocity extends i{constructor(t){super(),this.axisDirection=t}initialize(t){t.transform.orientAlongVelocity=!0}mutate(t,i,s){t.target,n.Object3D}}export class FollowParent extends i{constructor(t){super(),this.speed=t}initialize(t){}mutate(t,i,s){const e=t.parent.parentParticle??t.parent;if(0===this.speed)return t.position.copy(e.old.position),t.acceleration.copy(e.acceleration),void t.velocity.copy(e.velocity);const o=r.copy(e.position).sub(t.position),n=(o.length(),o.normalize());l.copy(n).multiplyScalar(this.speed),t.velocity.copy(l)}}export class Scale extends i{constructor(t,i,s){super(void 0,s),this.scaleA=t,this.scaleB=i}initialize(t){t.transform.scaleA=t.scale*this.scaleA,t.transform.scaleB=t.scale*this.scaleB,t.transform.oldRadius=t.radius}mutate(t,i,s){this.energize(t,i),t.scale=o.lerp(t.transform.scaleA,t.transform.scaleB,this.energy),t.scale<5e-4&&(t.scale=0),t.radius=t.transform.oldRadius*t.scale}}export class ScaleComponents extends i{constructor(t,i,s){super(void 0,s),this.scaleA=t,this.scaleB=i}initialize(i){let s=i.transform.initialScale;s?(s=s.clone(),i.transform.initialScale=s):(s=new t(1,1,1),i.transform.initialScale=s),i.transform.scaleComponentsA=s.clone().multiply(this.scaleA),i.transform.scaleComponentsB=s.clone().multiply(this.scaleB)}mutate(t,i,s){this.energize(t,i);const e=t.transform.scaleComponentsA,o=t.transform.scaleComponentsB;t.transform.initialScale.lerpVectors(o,e,this.energy)}}export class LinearDamping extends i{constructor(t){super(),this.factor=t}mutate(t,i,s){this.energize(t,i);const e=r.copy(t.velocity).multiplyScalar(-this.factor*i);t.velocity.add(e)}}const r=new s,l=new s;export var AxisPlane;!function(t){t[t.xy=0]="xy",t[t.xz=1]="xz",t[t.yz=2]="yz",t[t.xyz=3]="xyz"}(AxisPlane||(AxisPlane={}));export class Disperse extends i{constructor(t,i,s=e.easeLinear){super(void 0,s,void 0,!0),this.distance=t,this.plane=i}initialize(t){t.transform.initialPos=t.position.clone();const i=c.copy(t.transform.initialPos).sub(t.parent.position).normalize();switch(this.plane){case AxisPlane.xy:i.setComponent(2,0);break;case AxisPlane.xz:i.setComponent(1,0);break;case AxisPlane.yz:i.setComponent(0,0)}t.transform.displacement=i.clone().multiplyScalar(this.distance),t.transform.prevEnergy=1}mutate(t,i,s){this.energize(t,i);t.transform.initialPos;const e=t.transform.displacement,o=t.transform.prevEnergy-this.energy;t.transform.prevEnergy=this.energy;t.position.x+=e.x*o,t.position.y+=e.y*o,t.position.z+=e.z*o}}export class MoveOverLife extends i{constructor(t,i,s,o=e.easeLinear){super(void 0,o,void 0,!0),this.x=t,this.y=i,this.z=s}initialize(t){t.transform.initialPos=t.position.clone()}mutate(t,i,s){this.energize(t,i);const e=t.transform.initialPos,o=1-this.energy;t.position.x=e.x+this.x*o,t.position.y=e.y+this.y*o,t.position.z=e.z+this.z*o}}const c=new s;/*
2
2
  * Copyright (©) 2025 Hology Interactive AB. All rights reserved.
3
3
  * See the LICENSE.md file for details.
4
4
  */
@@ -182,6 +182,14 @@ declare class ScaleDef extends BaseBevDef<ScaleDef> {
182
182
  };
183
183
  make(params?: ParamsType<this>): Behaviour;
184
184
  }
185
+ declare class ScaleComponentsDef extends BaseBevDef<ScaleComponentsDef> {
186
+ parameters: {
187
+ a: ShapeParameterDef<Vector3>;
188
+ b: ShapeParameterDef<Vector3>;
189
+ ease: ShapeParameterDef<Curve2>;
190
+ };
191
+ make(params?: ParamsType<this>): Behaviour;
192
+ }
185
193
  declare class RandomDriftDef extends BaseBevDef<RandomDriftDef> {
186
194
  parameters: {
187
195
  drift: ShapeParameterDef<Vector3>;
@@ -297,6 +305,7 @@ declare const vfxBehaviours: {
297
305
  repulsion: RepulsionDef;
298
306
  attraction: AttractionDef;
299
307
  scale: ScaleDef;
308
+ scaleComponents: ScaleComponentsDef;
300
309
  randomDrift: RandomDriftDef;
301
310
  rotate: RotateDef;
302
311
  rotateAdd: RotateAddDef;
@@ -1,4 +1,4 @@
1
- import{MathUtils as e,Vector2 as r,Vector3 as t}from"three";import{Alpha as s,Attraction as n,BoxZone as a,CircleZone as o,Color as i,ease as c,Force as u,Gravity as d,Life as m,LineZone as p,Mass as l,Position as w,RadialVelocity as x,RandomDrift as f,Repulsion as h,Rotate as y,Vector3D as g}from"@hology/nebula";import{AxisDirection as k,AxisPlane as v,Disperse as z,FollowParent as b,LinearDamping as R,MoveOverLife as T,OrientAlongVelocity as L,RotatePosition as V,Scale as j}from"./behaviours.js";import{AdditiveVelocity as D,InitialScale as C,InitialScaleComponents as B,RandomDirection as I,RandomRotation as O,randomRotationAxis as A,RandomScale as K,Rotation as P}from"./initializsers.js";import{PointZone as S,SphereZone as Y}from"./zones.js";import{WorldCollisionBehaviour as M}from"./vfx-collision-behaviour.js";import{Curve2 as X}from"../../utils/curve.js";class Z{build(e={}){const r=N(e,this.parameters);return this.make(r)}}class q{build(e={}){const r=N(e,this.parameters);return this.make(r)}}function E(e,r,t){return{type:"number",default:e,float:!0,min:r,max:t}}function F(e){return{type:"vec3",default:(new t).fromArray(e)}}function G(e){return{type:"color",default:e}}function H(e,r){return{type:"select",opts:e,default:r}}function J(){return{type:"curve",default:X.linear()}}function N(e,r){const t={};for(let s in r)null==e[s]?t[s]=r[s].default:t[s]=e[s];return t}function Q(e){return r=>e.getY(r)}const U={lifetime:new class extends q{constructor(){super(...arguments),this.parameters={duration:E(1,0,1e5)}}make(e={}){return new m(e.duration)}},randomLifetime:new class extends q{constructor(){super(...arguments),this.parameters={minDuration:E(1,0,1e5),maxDuration:E(2,0,1e5)}}make(e={}){return new m(e.minDuration,e.maxDuration)}},positionPoint:new class extends q{constructor(){super(...arguments),this.parameters={position:F([0,0,0])}}make(e={}){const{x:r,y:t,z:s}=e.position;return new w(new S(r,t,s))}},positionBox:new class extends q{constructor(){super(...arguments),this.parameters={position:F([0,0,0]),dimensions:F([0,0,0])}}make(e={}){const{x:r,y:t,z:s}=e.position,{x:n,y:o,z:i}=e.dimensions;return new w(new a(r,t,s,n,o,i))}},positionSphere:new class extends q{constructor(){super(...arguments),this.parameters={position:F([0,0,0]),radius:E(1)}}make(e={}){const{x:r,y:t,z:s}=e.position;return new w(new Y(r,t,s,e.radius))}},positionLine:new class extends q{constructor(){super(...arguments),this.parameters={a:F([0,0,0]),b:F([0,0,1])}}make(e={}){const{x:r,y:t,z:s}=e.a,{x:n,y:a,z:o}=e.b;return new w(new p(r,t,s,n,a,o))}},positionCircle:new class extends q{constructor(){super(...arguments),this.parameters={position:F([0,0,0]),rotation:F([0,0,0]),radius:E(1,0,1e4)}}make(r={}){const{x:t,y:s,z:n}=r.position,{x:a,y:i,z:c}=r.rotation;return new w(new o(t,s,n,r.radius,0,e.degToRad(a),e.degToRad(i),e.degToRad(c)))}},positionRing:new class extends q{constructor(){super(...arguments),this.parameters={position:F([0,0,0]),rotation:F([0,0,0]),radius:E(1,0,1e4),thickness:E(.2,0,1e4)}}make(r={}){const{x:t,y:s,z:n}=r.position,{x:a,y:i,z:c}=r.rotation;return new w(new o(t,s,n,r.radius,Math.max(r.thickness,1e-4),e.degToRad(a),e.degToRad(i),e.degToRad(c)))}},rotation:new class extends q{constructor(){super(...arguments),this.parameters={rotation:F([0,0,0])}}make(r={}){const{x:s,y:n,z:a}=r.rotation;return new P(new t(e.degToRad(s),e.degToRad(n),e.degToRad(a)))}},randomRotation:new class extends q{constructor(){super(...arguments),this.parameters={axis:H(A,"XYZ")}}make(e={}){return new O(e.axis)}},scale:new class extends q{constructor(){super(...arguments),this.parameters={scale:E(1)}}make(e={}){return new C(e.scale)}},scaleComponents:new class extends q{constructor(){super(...arguments),this.parameters={scale:F([1,1,1])}}make(e={}){return new B(e.scale)}},randomScale:new class extends q{constructor(){super(...arguments),this.parameters={min:E(1),max:E(1)}}make(e={}){return new K(e.min,e.max)}},mass:new class extends q{constructor(){super(...arguments),this.parameters={min:E(1)}}make(e={}){return new l(e.min)}},velocity:new class extends q{constructor(){super(...arguments),this.parameters={velocity:F([0,0,0])}}make(e={}){const{x:r,y:s,z:n}=e.velocity;return new D(new t(r,s,n))}},randomVelocity:new class extends q{constructor(){super(...arguments),this.parameters={min:F([0,0,0]),max:F([0,0,0])}}make(e={}){return new D(e.min,e.max)}},radialVelocity:new class extends q{constructor(){super(...arguments),this.parameters={speed:E(1),direction:F([0,1,0]),spread:E(0)}}make(e={}){return new x(e.speed,new g(e.direction.x,e.direction.y,e.direction.z),e.spread)}},randomDirection:new class extends q{constructor(){super(...arguments),this.parameters={speed:E(1)}}make(e={}){return new I(e.speed)}}},W={force:new class extends Z{constructor(){super(...arguments),this.parameters={force:F([0,0,0]),ease:J()}}make(e={}){return new u(e.force.x,e.force.y,e.force.z,void 0,Q(e.ease))}},gravity:new class extends Z{constructor(){super(...arguments),this.parameters={gravity:E(8),easing:J()}}make(e={}){return new d(e.gravity,void 0,Q(e.easing))}},repulsion:new class extends Z{constructor(){super(...arguments),this.parameters={target:F([0,0,0]),force:E(1),radius:E(1),easing:J()}}make(e={}){const r=new g(e.target.x,e.target.y,e.target.z);return new h(r,e.force,e.radius,void 0,Q(e.easing))}},attraction:new class extends Z{constructor(){super(...arguments),this.parameters={target:F([0,0,0]),force:E(1),radius:E(1),easing:J()}}make(e={}){const r=new g(e.target.x,e.target.y,e.target.z);return new n(r,e.force,e.radius,void 0,Q(e.easing))}},scale:new class extends Z{constructor(){super(...arguments),this.parameters={a:E(1),b:E(1),ease:J()}}make(e={}){return new j(e.a,e.b,Q(e.ease))}},randomDrift:new class extends Z{constructor(){super(...arguments),this.parameters={drift:F([1,1,1]),delay:E(0),ease:J()}}make(e={}){return new f(e.drift.x,e.drift.y,e.drift.z,e.delay,void 0,Q(e.ease))}},rotate:new class extends Z{constructor(){super(...arguments),this.parameters={rotation:F([0,0,0]),ease:J()}}make(r={}){const{x:t,y:s,z:n}=r.rotation;return new y(e.degToRad(t),e.degToRad(s),e.degToRad(n),void 0,Q(r.ease))}},rotateAdd:new class extends Z{constructor(){super(...arguments),this.parameters={rotation:F([0,0,0])}}make(r={}){const{x:t,y:s,z:n}=r.rotation,a=new y(e.degToRad(t),e.degToRad(s),e.degToRad(n),void 0);return a.rotationType="add",a}},changeColor:new class extends Z{constructor(){super(...arguments),this.parameters={a:G("#ffffff"),b:G("#ffffff"),ease:J()}}make(e={}){return new i(e.a,e.b,void 0,Q(e.ease))}},changeOpacity:new class extends Z{constructor(){super(...arguments),this.parameters={a:E(1,0,1),b:E(0,0,1),ease:J()}}make(e={}){return new s(e.a,e.b,void 0,Q(e.ease))}},vortex:new class extends Z{constructor(){super(...arguments),this.parameters={axis:F([0,1,0]),amount:E(1)}}make(e={}){return new V(e.axis,e.amount)}},moveTo:new class extends Z{constructor(){super(...arguments),this.parameters={target:F([0,1,0]),ease:J()}}make(e={}){return new T(e.target.x,e.target.y,e.target.z,Q(e.ease))}},linearDamping:new class extends Z{constructor(){super(...arguments),this.parameters={factor:E(.1,0,1e3)}}make(e={}){return new R(e.factor)}},followParent:new class extends Z{constructor(){super(...arguments),this.parameters={speed:E(0)}}make(e={}){return new b(e.speed)}},worldCollision:new class extends Z{constructor(){super(...arguments),this.parameters={friction:E(1,0,1),bounce:E(1,0,1),lifeLoss:E(0,0)}}make(e={}){return new M(null,e.bounce,e.friction,e.lifeLoss)}}};export const VfxInitializserLibrary=U;export const VfxInitializserLibraryKeys=Object.keys(VfxInitializserLibrary);export const VfxBehaviourLibrary=W;export const VfxBehaviourLibraryKeys=Object.keys(VfxBehaviourLibrary);/*
1
+ import{MathUtils as e,Vector2 as r,Vector3 as t}from"three";import{Alpha as s,Attraction as n,BoxZone as a,CircleZone as o,Color as i,ease as c,Force as u,Gravity as d,Life as m,LineZone as p,Mass as l,Position as w,RadialVelocity as x,RandomDrift as f,Repulsion as h,Rotate as y,Vector3D as g}from"@hology/nebula";import{AxisDirection as k,AxisPlane as b,Disperse as v,FollowParent as z,LinearDamping as R,MoveOverLife as T,OrientAlongVelocity as L,RotatePosition as V,Scale as j,ScaleComponents as D}from"./behaviours.js";import{AdditiveVelocity as C,InitialScale as B,InitialScaleComponents as I,RandomDirection as O,RandomRotation as A,randomRotationAxis as K,RandomScale as P,Rotation as S}from"./initializsers.js";import{PointZone as Y,SphereZone as M}from"./zones.js";import{WorldCollisionBehaviour as X}from"./vfx-collision-behaviour.js";import{Curve2 as Z}from"../../utils/curve.js";class q{build(e={}){const r=Q(e,this.parameters);return this.make(r)}}class E{build(e={}){const r=Q(e,this.parameters);return this.make(r)}}function F(e,r,t){return{type:"number",default:e,float:!0,min:r,max:t}}function G(e){return{type:"vec3",default:(new t).fromArray(e)}}function H(e){return{type:"color",default:e}}function J(e,r){return{type:"select",opts:e,default:r}}function N(){return{type:"curve",default:Z.linear()}}function Q(e,r){const t={};for(let s in r)null==e[s]?t[s]=r[s].default:t[s]=e[s];return t}function U(e){return r=>e.getY(r)}const W={lifetime:new class extends E{constructor(){super(...arguments),this.parameters={duration:F(1,0,1e5)}}make(e={}){return new m(e.duration)}},randomLifetime:new class extends E{constructor(){super(...arguments),this.parameters={minDuration:F(1,0,1e5),maxDuration:F(2,0,1e5)}}make(e={}){return new m(e.minDuration,e.maxDuration)}},positionPoint:new class extends E{constructor(){super(...arguments),this.parameters={position:G([0,0,0])}}make(e={}){const{x:r,y:t,z:s}=e.position;return new w(new Y(r,t,s))}},positionBox:new class extends E{constructor(){super(...arguments),this.parameters={position:G([0,0,0]),dimensions:G([0,0,0])}}make(e={}){const{x:r,y:t,z:s}=e.position,{x:n,y:o,z:i}=e.dimensions;return new w(new a(r,t,s,n,o,i))}},positionSphere:new class extends E{constructor(){super(...arguments),this.parameters={position:G([0,0,0]),radius:F(1)}}make(e={}){const{x:r,y:t,z:s}=e.position;return new w(new M(r,t,s,e.radius))}},positionLine:new class extends E{constructor(){super(...arguments),this.parameters={a:G([0,0,0]),b:G([0,0,1])}}make(e={}){const{x:r,y:t,z:s}=e.a,{x:n,y:a,z:o}=e.b;return new w(new p(r,t,s,n,a,o))}},positionCircle:new class extends E{constructor(){super(...arguments),this.parameters={position:G([0,0,0]),rotation:G([0,0,0]),radius:F(1,0,1e4)}}make(r={}){const{x:t,y:s,z:n}=r.position,{x:a,y:i,z:c}=r.rotation;return new w(new o(t,s,n,r.radius,0,e.degToRad(a),e.degToRad(i),e.degToRad(c)))}},positionRing:new class extends E{constructor(){super(...arguments),this.parameters={position:G([0,0,0]),rotation:G([0,0,0]),radius:F(1,0,1e4),thickness:F(.2,0,1e4)}}make(r={}){const{x:t,y:s,z:n}=r.position,{x:a,y:i,z:c}=r.rotation;return new w(new o(t,s,n,r.radius,Math.max(r.thickness,1e-4),e.degToRad(a),e.degToRad(i),e.degToRad(c)))}},rotation:new class extends E{constructor(){super(...arguments),this.parameters={rotation:G([0,0,0])}}make(r={}){const{x:s,y:n,z:a}=r.rotation;return new S(new t(e.degToRad(s),e.degToRad(n),e.degToRad(a)))}},randomRotation:new class extends E{constructor(){super(...arguments),this.parameters={axis:J(K,"XYZ")}}make(e={}){return new A(e.axis)}},scale:new class extends E{constructor(){super(...arguments),this.parameters={scale:F(1)}}make(e={}){return new B(e.scale)}},scaleComponents:new class extends E{constructor(){super(...arguments),this.parameters={scale:G([1,1,1])}}make(e={}){return new I(e.scale)}},randomScale:new class extends E{constructor(){super(...arguments),this.parameters={min:F(1),max:F(1)}}make(e={}){return new P(e.min,e.max)}},mass:new class extends E{constructor(){super(...arguments),this.parameters={min:F(1)}}make(e={}){return new l(e.min)}},velocity:new class extends E{constructor(){super(...arguments),this.parameters={velocity:G([0,0,0])}}make(e={}){const{x:r,y:s,z:n}=e.velocity;return new C(new t(r,s,n))}},randomVelocity:new class extends E{constructor(){super(...arguments),this.parameters={min:G([0,0,0]),max:G([0,0,0])}}make(e={}){return new C(e.min,e.max)}},radialVelocity:new class extends E{constructor(){super(...arguments),this.parameters={speed:F(1),direction:G([0,1,0]),spread:F(0)}}make(e={}){return new x(e.speed,new g(e.direction.x,e.direction.y,e.direction.z),e.spread)}},randomDirection:new class extends E{constructor(){super(...arguments),this.parameters={speed:F(1)}}make(e={}){return new O(e.speed)}}},$={force:new class extends q{constructor(){super(...arguments),this.parameters={force:G([0,0,0]),ease:N()}}make(e={}){return new u(e.force.x,e.force.y,e.force.z,void 0,U(e.ease))}},gravity:new class extends q{constructor(){super(...arguments),this.parameters={gravity:F(8),easing:N()}}make(e={}){return new d(e.gravity,void 0,U(e.easing))}},repulsion:new class extends q{constructor(){super(...arguments),this.parameters={target:G([0,0,0]),force:F(1),radius:F(1),easing:N()}}make(e={}){const r=new g(e.target.x,e.target.y,e.target.z);return new h(r,e.force,e.radius,void 0,U(e.easing))}},attraction:new class extends q{constructor(){super(...arguments),this.parameters={target:G([0,0,0]),force:F(1),radius:F(1),easing:N()}}make(e={}){const r=new g(e.target.x,e.target.y,e.target.z);return new n(r,e.force,e.radius,void 0,U(e.easing))}},scale:new class extends q{constructor(){super(...arguments),this.parameters={a:F(1),b:F(1),ease:N()}}make(e={}){return new j(e.a,e.b,U(e.ease))}},scaleComponents:new class extends q{constructor(){super(...arguments),this.parameters={a:G([1,1,1]),b:G([1,1,1]),ease:N()}}make(e={}){return new D(e.a,e.b,U(e.ease))}},randomDrift:new class extends q{constructor(){super(...arguments),this.parameters={drift:G([1,1,1]),delay:F(0),ease:N()}}make(e={}){return new f(e.drift.x,e.drift.y,e.drift.z,e.delay,void 0,U(e.ease))}},rotate:new class extends q{constructor(){super(...arguments),this.parameters={rotation:G([0,0,0]),ease:N()}}make(r={}){const{x:t,y:s,z:n}=r.rotation;return new y(e.degToRad(t),e.degToRad(s),e.degToRad(n),void 0,U(r.ease))}},rotateAdd:new class extends q{constructor(){super(...arguments),this.parameters={rotation:G([0,0,0])}}make(r={}){const{x:t,y:s,z:n}=r.rotation,a=new y(e.degToRad(t),e.degToRad(s),e.degToRad(n),void 0);return a.rotationType="add",a}},changeColor:new class extends q{constructor(){super(...arguments),this.parameters={a:H("#ffffff"),b:H("#ffffff"),ease:N()}}make(e={}){return new i(e.a,e.b,void 0,U(e.ease))}},changeOpacity:new class extends q{constructor(){super(...arguments),this.parameters={a:F(1,0,1),b:F(0,0,1),ease:N()}}make(e={}){return new s(e.a,e.b,void 0,U(e.ease))}},vortex:new class extends q{constructor(){super(...arguments),this.parameters={axis:G([0,1,0]),amount:F(1)}}make(e={}){return new V(e.axis,e.amount)}},moveTo:new class extends q{constructor(){super(...arguments),this.parameters={target:G([0,1,0]),ease:N()}}make(e={}){return new T(e.target.x,e.target.y,e.target.z,U(e.ease))}},linearDamping:new class extends q{constructor(){super(...arguments),this.parameters={factor:F(.1,0,1e3)}}make(e={}){return new R(e.factor)}},followParent:new class extends q{constructor(){super(...arguments),this.parameters={speed:F(0)}}make(e={}){return new z(e.speed)}},worldCollision:new class extends q{constructor(){super(...arguments),this.parameters={friction:F(1,0,1),bounce:F(1,0,1),lifeLoss:F(0,0)}}make(e={}){return new X(null,e.bounce,e.friction,e.lifeLoss)}}};export const VfxInitializserLibrary=W;export const VfxInitializserLibraryKeys=Object.keys(VfxInitializserLibrary);export const VfxBehaviourLibrary=$;export const VfxBehaviourLibraryKeys=Object.keys(VfxBehaviourLibrary);/*
2
2
  * Copyright (©) 2025 Hology Interactive AB. All rights reserved.
3
3
  * See the LICENSE.md file for details.
4
4
  */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hology/core",
3
- "version": "0.0.162",
3
+ "version": "0.0.163",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",
@@ -168,7 +168,7 @@
168
168
  "dependencies": {
169
169
  "@babel/runtime": "^7.24.8",
170
170
  "@dimforge/rapier3d-compat": "^0.14.0",
171
- "@hology/nebula": "^0.0.154",
171
+ "@hology/nebula": "^0.0.157",
172
172
  "@plumier/reflect": "^1.1.0",
173
173
  "@recast-navigation/three": "0.39.0",
174
174
  "recast-navigation": "0.39.0",