@hology/core 0.0.230 → 0.0.232

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,4 +1,4 @@
1
- import*as e from"three";import{describe as s,expect as t,it as a,vi as n}from"vitest";import{createSequenceData as r,createVfxClipInstance as c,createVfxTrack as o}from"../effects/sequence/sequence-data.js";import{SequencePlayer as i}from"../effects/sequence/sequence-player.js";function l(){return{object:new e.Object3D,restart:n.fn(),play:n.fn(),pause:n.fn(),previewAt:n.fn(),clearPreview:n.fn(),stop:n.fn(),getParticleCount:n.fn(()=>0)}}async function p(){await Promise.resolve(),await Promise.resolve()}n.mock("../gameplay/actors/builtin/index.js",()=>({builtInActors:{},default:{}})),n.mock("../gameplay/actors/index.js",()=>({CharacterAnimationComponent:class{},CharacterMovementComponent:class{}})),n.mock("../effects/vfx/vfx-actor.js",()=>({VfxActor:class{}})),n.mock("../effects/vfx/vfx-param.js",()=>({VisualEffect:class{}})),n.mock("../effects/vfx/vfx-service.js",()=>({VfxService:class{}})),n.hoisted(()=>{if("undefined"==typeof HTMLCanvasElement)return;const e=new Proxy({},{get:(e,s)=>(s in e||(e[s]=("string"!=typeof s||!s.startsWith("is"))&&n.fn()),e[s]),set:(e,s,t)=>(e[s]=t,!0)});Object.defineProperty(HTMLCanvasElement.prototype,"getContext",{configurable:!0,value:()=>e})}),s("sequence VFX tracks",()=>{a("restarts an already-active VFX clip when seeking backwards within the clip",async()=>{const s=l(),a=new i;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=2;const d=o(),m=c("vfx-asset",0,1.5);d.clips.push(m),f.tracks.push(d),a.load(f),a.play(),await p(),a.seek(1),s.restart.mockClear(),s.play.mockClear(),a.seek(.25),t(s.restart).toHaveBeenCalledTimes(1),t(s.play).toHaveBeenCalledTimes(1)}),a("restarts active VFX clips when a looping sequence wraps to the start",async()=>{const s=l(),a=new i;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=1,f.loop=!0;const d=o(),m=c("vfx-asset",0,1);d.clips.push(m),f.tracks.push(d),a.load(f),a.play(),await p(),s.restart.mockClear(),s.play.mockClear(),a.update(1.1),t(s.restart).toHaveBeenCalledTimes(1),t(s.play).toHaveBeenCalledTimes(1)}),a("clears VFX particles when seeking backwards before the clip starts",async()=>{const s=l(),a=new i;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=2;const d=o(),m=c("vfx-asset",.5,1);d.clips.push(m),f.tracks.push(d),a.load(f),a.play(),a.seek(.75),await p(),s.restart.mockClear(),s.stop.mockClear(),s.pause.mockClear(),a.seek(.25),t(s.restart).toHaveBeenCalledTimes(1),t(s.stop).toHaveBeenCalled(),t(s.pause).toHaveBeenCalledTimes(1)}),a("rebuilds VFX at the playhead when an editor preview seeks while paused",async()=>{const s=l(),a=new i;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)}),a.externalTimeControl=!0,a.inEditor=!0;const f=r();f.duration=2;const d=o();d.clips.push(c("vfx-asset",.5,1)),f.tracks.push(d),a.load(f),a.seek(.75),await p(),t(s.previewAt).toHaveBeenCalledWith(.25,1,"finish",.25),t(s.play).not.toHaveBeenCalled()}),a("clears an editor VFX preview when seeking before its clip",async()=>{const s=l(),a=new i;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)}),a.externalTimeControl=!0,a.inEditor=!0;const f=r();f.duration=2;const d=o();d.clips.push(c("vfx-asset",.5,1)),f.tracks.push(d),a.load(f),a.seek(.75),await p(),s.clearPreview.mockClear(),a.seek(.25),t(s.clearPreview).toHaveBeenCalledTimes(1)})});/*
1
+ import*as e from"three";import{describe as s,expect as t,it as a,vi as n}from"vitest";import{createSequenceData as r,createVfxClipInstance as c,createVfxTrack as o}from"../effects/sequence/sequence-data.js";import{SequencePlayer as l}from"../effects/sequence/sequence-player.js";function i(){return{object:new e.Object3D,restart:n.fn(),play:n.fn(),pause:n.fn(),previewAt:n.fn(),clearPreview:n.fn(),stop:n.fn(),getParticleCount:n.fn(()=>0)}}async function p(){await Promise.resolve(),await Promise.resolve()}n.mock("../gameplay/actors/builtin/index.js",()=>({builtInActors:{},default:{}})),n.mock("../gameplay/actors/index.js",()=>({CharacterAnimationComponent:class{},CharacterMovementComponent:class{}})),n.mock("../effects/vfx/vfx-actor.js",()=>({VfxActor:class{}})),n.mock("../effects/vfx/vfx-param.js",()=>({VisualEffect:class{}})),n.mock("../effects/vfx/vfx-service.js",()=>({VfxService:class{}})),n.hoisted(()=>{if("undefined"==typeof HTMLCanvasElement)return;const e=new Proxy({},{get:(e,s)=>(s in e||(e[s]=("string"!=typeof s||!s.startsWith("is"))&&n.fn()),e[s]),set:(e,s,t)=>(e[s]=t,!0)});Object.defineProperty(HTMLCanvasElement.prototype,"getContext",{configurable:!0,value:()=>e})}),s("sequence VFX tracks",()=>{a("preloads unique VFX assets when preparing a sequence",async()=>{const s=new l,a=n.fn(async e=>{});s.setWorld({scene:new e.Scene,preloadVisualEffects:a}),s.setActorFactory({}),s.setAssetLoader({getAsset:n.fn(async e=>({id:e,vfx:{emitters:[]}}))});const i=r(),p=o();p.clips.push(c("vfx-asset",0,1),c("vfx-asset",1,1),c("other-vfx-asset",2,1)),i.tracks.push(p),s.load(i),await s.prepare(),t(a).toHaveBeenCalledTimes(1),t([...a.mock.calls[0][0]]).toHaveLength(2)}),a("restarts an already-active VFX clip when seeking backwards within the clip",async()=>{const s=i(),a=new l;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=2;const d=o(),v=c("vfx-asset",0,1.5);d.clips.push(v),f.tracks.push(d),a.load(f),a.play(),await p(),a.seek(1),s.restart.mockClear(),s.play.mockClear(),a.seek(.25),t(s.restart).toHaveBeenCalledTimes(1),t(s.play).toHaveBeenCalledTimes(1)}),a("restarts active VFX clips when a looping sequence wraps to the start",async()=>{const s=i(),a=new l;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=1,f.loop=!0;const d=o(),v=c("vfx-asset",0,1);d.clips.push(v),f.tracks.push(d),a.load(f),a.play(),await p(),s.restart.mockClear(),s.play.mockClear(),a.update(1.1),t(s.restart).toHaveBeenCalledTimes(1),t(s.play).toHaveBeenCalledTimes(1)}),a("clears VFX particles when seeking backwards before the clip starts",async()=>{const s=i(),a=new l;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)});const f=r();f.duration=2;const d=o(),v=c("vfx-asset",.5,1);d.clips.push(v),f.tracks.push(d),a.load(f),a.play(),a.seek(.75),await p(),s.restart.mockClear(),s.stop.mockClear(),s.pause.mockClear(),a.seek(.25),t(s.restart).toHaveBeenCalledTimes(1),t(s.stop).toHaveBeenCalled(),t(s.pause).toHaveBeenCalledTimes(1)}),a("rebuilds VFX at the playhead when an editor preview seeks while paused",async()=>{const s=i(),a=new l;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)}),a.externalTimeControl=!0,a.inEditor=!0;const f=r();f.duration=2;const d=o();d.clips.push(c("vfx-asset",.5,1)),f.tracks.push(d),a.load(f),a.seek(.75),await p(),t(s.previewAt).toHaveBeenCalledWith(.25,1,"finish",.25),t(s.play).not.toHaveBeenCalled()}),a("clears an editor VFX preview when seeking before its clip",async()=>{const s=i(),a=new l;a.setWorld({scene:new e.Scene}),a.setVfxService({createFromAssetId:n.fn(async()=>s)}),a.externalTimeControl=!0,a.inEditor=!0;const f=r();f.duration=2;const d=o();d.clips.push(c("vfx-asset",.5,1)),f.tracks.push(d),a.load(f),a.seek(.75),await p(),s.clearPreview.mockClear(),a.seek(.25),t(s.clearPreview).toHaveBeenCalledTimes(1)})});/*
2
2
  * Copyright (©) 2026 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.230",
3
+ "version": "0.0.232",
4
4
  "description": "",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",