@twick/core 0.11.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/LICENSE +21 -0
- package/lib/app/Logger.d.ts +105 -0
- package/lib/app/Logger.d.ts.map +1 -0
- package/lib/app/Logger.js +77 -0
- package/lib/app/PlaybackManager.d.ts +55 -0
- package/lib/app/PlaybackManager.d.ts.map +1 -0
- package/lib/app/PlaybackManager.js +179 -0
- package/lib/app/PlaybackStatus.d.ts +30 -0
- package/lib/app/PlaybackStatus.d.ts.map +1 -0
- package/lib/app/PlaybackStatus.js +46 -0
- package/lib/app/Player.d.ts +130 -0
- package/lib/app/Player.d.ts.map +1 -0
- package/lib/app/Player.js +375 -0
- package/lib/app/Project.d.ts +145 -0
- package/lib/app/Project.d.ts.map +1 -0
- package/lib/app/Project.js +10 -0
- package/lib/app/Renderer.d.ts +90 -0
- package/lib/app/Renderer.d.ts.map +1 -0
- package/lib/app/Renderer.js +318 -0
- package/lib/app/SharedWebGLContext.d.ts +24 -0
- package/lib/app/SharedWebGLContext.d.ts.map +1 -0
- package/lib/app/SharedWebGLContext.js +200 -0
- package/lib/app/Stage.d.ts +30 -0
- package/lib/app/Stage.d.ts.map +1 -0
- package/lib/app/Stage.js +75 -0
- package/lib/app/TimeEstimator.d.ts +53 -0
- package/lib/app/TimeEstimator.d.ts.map +1 -0
- package/lib/app/TimeEstimator.js +70 -0
- package/lib/app/index.d.ts +16 -0
- package/lib/app/index.d.ts.map +1 -0
- package/lib/app/index.js +16 -0
- package/lib/app/makeProject.d.ts +15 -0
- package/lib/app/makeProject.d.ts.map +1 -0
- package/lib/app/makeProject.js +72 -0
- package/lib/app/project-settings.d.ts +8 -0
- package/lib/app/project-settings.d.ts.map +1 -0
- package/lib/app/project-settings.js +13 -0
- package/lib/decorators/decorate.d.ts +2 -0
- package/lib/decorators/decorate.d.ts.map +1 -0
- package/lib/decorators/decorate.js +10 -0
- package/lib/decorators/deprecated.d.ts +5 -0
- package/lib/decorators/deprecated.d.ts.map +1 -0
- package/lib/decorators/deprecated.js +23 -0
- package/lib/decorators/index.d.ts +9 -0
- package/lib/decorators/index.d.ts.map +1 -0
- package/lib/decorators/index.js +9 -0
- package/lib/decorators/lazy.d.ts +14 -0
- package/lib/decorators/lazy.d.ts.map +1 -0
- package/lib/decorators/lazy.js +27 -0
- package/lib/decorators/threadable.d.ts +2 -0
- package/lib/decorators/threadable.d.ts.map +1 -0
- package/lib/decorators/threadable.js +7 -0
- package/lib/events/AsyncEventDispatcher.d.ts +45 -0
- package/lib/events/AsyncEventDispatcher.d.ts.map +1 -0
- package/lib/events/AsyncEventDispatcher.js +33 -0
- package/lib/events/EventDispatcher.d.ts +38 -0
- package/lib/events/EventDispatcher.d.ts.map +1 -0
- package/lib/events/EventDispatcher.js +29 -0
- package/lib/events/EventDispatcherBase.d.ts +55 -0
- package/lib/events/EventDispatcherBase.d.ts.map +1 -0
- package/lib/events/EventDispatcherBase.js +68 -0
- package/lib/events/FlagDispatcher.d.ts +54 -0
- package/lib/events/FlagDispatcher.d.ts.map +1 -0
- package/lib/events/FlagDispatcher.js +63 -0
- package/lib/events/ValueDispatcher.d.ts +81 -0
- package/lib/events/ValueDispatcher.d.ts.map +1 -0
- package/lib/events/ValueDispatcher.js +97 -0
- package/lib/events/index.d.ts +11 -0
- package/lib/events/index.d.ts.map +1 -0
- package/lib/events/index.js +11 -0
- package/lib/exporter/Exporter.d.ts +101 -0
- package/lib/exporter/Exporter.d.ts.map +1 -0
- package/lib/exporter/Exporter.js +2 -0
- package/lib/exporter/FFmpegExporter.d.ts +50 -0
- package/lib/exporter/FFmpegExporter.d.ts.map +1 -0
- package/lib/exporter/FFmpegExporter.js +140 -0
- package/lib/exporter/ImageExporter.d.ts +34 -0
- package/lib/exporter/ImageExporter.d.ts.map +1 -0
- package/lib/exporter/ImageExporter.js +80 -0
- package/lib/exporter/WasmExporter.d.ts +19 -0
- package/lib/exporter/WasmExporter.d.ts.map +1 -0
- package/lib/exporter/WasmExporter.js +78 -0
- package/lib/exporter/download-videos.d.ts +3 -0
- package/lib/exporter/download-videos.d.ts.map +1 -0
- package/lib/exporter/download-videos.js +45 -0
- package/lib/exporter/index.d.ts +5 -0
- package/lib/exporter/index.d.ts.map +1 -0
- package/lib/exporter/index.js +5 -0
- package/lib/flow/all.d.ts +18 -0
- package/lib/flow/all.d.ts.map +1 -0
- package/lib/flow/all.js +25 -0
- package/lib/flow/any.d.ts +18 -0
- package/lib/flow/any.d.ts.map +1 -0
- package/lib/flow/any.js +25 -0
- package/lib/flow/chain.d.ts +36 -0
- package/lib/flow/chain.d.ts.map +1 -0
- package/lib/flow/chain.js +46 -0
- package/lib/flow/delay.d.ts +29 -0
- package/lib/flow/delay.d.ts.map +1 -0
- package/lib/flow/delay.js +39 -0
- package/lib/flow/every.d.ts +41 -0
- package/lib/flow/every.d.ts.map +1 -0
- package/lib/flow/every.js +61 -0
- package/lib/flow/index.d.ts +17 -0
- package/lib/flow/index.d.ts.map +1 -0
- package/lib/flow/index.js +17 -0
- package/lib/flow/join.d.ts +35 -0
- package/lib/flow/join.d.ts.map +1 -0
- package/lib/flow/join.js +33 -0
- package/lib/flow/loop.d.ts +58 -0
- package/lib/flow/loop.d.ts.map +1 -0
- package/lib/flow/loop.js +51 -0
- package/lib/flow/loopFor.d.ts +25 -0
- package/lib/flow/loopFor.d.ts.map +1 -0
- package/lib/flow/loopFor.js +42 -0
- package/lib/flow/names.d.ts +3 -0
- package/lib/flow/names.d.ts.map +1 -0
- package/lib/flow/names.js +11 -0
- package/lib/flow/run.d.ts +45 -0
- package/lib/flow/run.d.ts.map +1 -0
- package/lib/flow/run.js +14 -0
- package/lib/flow/scheduling.d.ts +18 -0
- package/lib/flow/scheduling.d.ts.map +1 -0
- package/lib/flow/scheduling.js +33 -0
- package/lib/flow/sequence.d.ts +22 -0
- package/lib/flow/sequence.d.ts.map +1 -0
- package/lib/flow/sequence.js +31 -0
- package/lib/index.d.ts +16 -0
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +16 -0
- package/lib/media/index.d.ts +7 -0
- package/lib/media/index.d.ts.map +1 -0
- package/lib/media/index.js +7 -0
- package/lib/media/loadImage.d.ts +8 -0
- package/lib/media/loadImage.d.ts.map +1 -0
- package/lib/media/loadImage.js +29 -0
- package/lib/plugin/DefaultPlugin.d.ts +10 -0
- package/lib/plugin/DefaultPlugin.d.ts.map +1 -0
- package/lib/plugin/DefaultPlugin.js +17 -0
- package/lib/plugin/Plugin.d.ts +53 -0
- package/lib/plugin/Plugin.d.ts.map +1 -0
- package/lib/plugin/Plugin.js +2 -0
- package/lib/plugin/index.d.ts +3 -0
- package/lib/plugin/index.d.ts.map +1 -0
- package/lib/plugin/index.js +3 -0
- package/lib/plugin/makePlugin.d.ts +15 -0
- package/lib/plugin/makePlugin.d.ts.map +1 -0
- package/lib/plugin/makePlugin.js +16 -0
- package/lib/scenes/GeneratorScene.d.ts +95 -0
- package/lib/scenes/GeneratorScene.d.ts.map +1 -0
- package/lib/scenes/GeneratorScene.js +273 -0
- package/lib/scenes/Inspectable.d.ts +71 -0
- package/lib/scenes/Inspectable.d.ts.map +1 -0
- package/lib/scenes/Inspectable.js +4 -0
- package/lib/scenes/LifecycleEvents.d.ts +18 -0
- package/lib/scenes/LifecycleEvents.d.ts.map +1 -0
- package/lib/scenes/LifecycleEvents.js +45 -0
- package/lib/scenes/Random.d.ts +66 -0
- package/lib/scenes/Random.d.ts.map +1 -0
- package/lib/scenes/Random.js +101 -0
- package/lib/scenes/Scene.d.ts +298 -0
- package/lib/scenes/Scene.d.ts.map +1 -0
- package/lib/scenes/Scene.js +25 -0
- package/lib/scenes/SceneState.d.ts +34 -0
- package/lib/scenes/SceneState.d.ts.map +1 -0
- package/lib/scenes/SceneState.js +35 -0
- package/lib/scenes/Shaders.d.ts +63 -0
- package/lib/scenes/Shaders.d.ts.map +1 -0
- package/lib/scenes/Shaders.js +158 -0
- package/lib/scenes/Slides.d.ts +33 -0
- package/lib/scenes/Slides.d.ts.map +1 -0
- package/lib/scenes/Slides.js +115 -0
- package/lib/scenes/Threadable.d.ts +19 -0
- package/lib/scenes/Threadable.d.ts.map +1 -0
- package/lib/scenes/Threadable.js +4 -0
- package/lib/scenes/Variables.d.ts +24 -0
- package/lib/scenes/Variables.d.ts.map +1 -0
- package/lib/scenes/Variables.js +39 -0
- package/lib/scenes/index.d.ts +16 -0
- package/lib/scenes/index.d.ts.map +1 -0
- package/lib/scenes/index.js +16 -0
- package/lib/signals/CompoundSignalContext.d.ts +21 -0
- package/lib/signals/CompoundSignalContext.d.ts.map +1 -0
- package/lib/signals/CompoundSignalContext.js +73 -0
- package/lib/signals/ComputedContext.d.ts +14 -0
- package/lib/signals/ComputedContext.d.ts.map +1 -0
- package/lib/signals/ComputedContext.js +36 -0
- package/lib/signals/DependencyContext.d.ts +32 -0
- package/lib/signals/DependencyContext.d.ts.map +1 -0
- package/lib/signals/DependencyContext.js +87 -0
- package/lib/signals/SignalContext.d.ts +120 -0
- package/lib/signals/SignalContext.d.ts.map +1 -0
- package/lib/signals/SignalContext.js +245 -0
- package/lib/signals/createComputed.d.ts +3 -0
- package/lib/signals/createComputed.d.ts.map +1 -0
- package/lib/signals/createComputed.js +5 -0
- package/lib/signals/createComputedAsync.d.ts +4 -0
- package/lib/signals/createComputedAsync.d.ts.map +1 -0
- package/lib/signals/createComputedAsync.js +15 -0
- package/lib/signals/createSignal.d.ts +5 -0
- package/lib/signals/createSignal.d.ts.map +1 -0
- package/lib/signals/createSignal.js +6 -0
- package/lib/signals/index.d.ts +16 -0
- package/lib/signals/index.d.ts.map +1 -0
- package/lib/signals/index.js +16 -0
- package/lib/signals/symbols.d.ts +2 -0
- package/lib/signals/symbols.d.ts.map +1 -0
- package/lib/signals/symbols.js +2 -0
- package/lib/signals/types.d.ts +51 -0
- package/lib/signals/types.d.ts.map +1 -0
- package/lib/signals/types.js +2 -0
- package/lib/signals/utils.d.ts +5 -0
- package/lib/signals/utils.d.ts.map +1 -0
- package/lib/signals/utils.js +10 -0
- package/lib/threading/Thread.d.ts +77 -0
- package/lib/threading/Thread.d.ts.map +1 -0
- package/lib/threading/Thread.js +169 -0
- package/lib/threading/ThreadGenerator.d.ts +39 -0
- package/lib/threading/ThreadGenerator.d.ts.map +1 -0
- package/lib/threading/ThreadGenerator.js +17 -0
- package/lib/threading/cancel.d.ts +17 -0
- package/lib/threading/cancel.d.ts.map +1 -0
- package/lib/threading/cancel.js +26 -0
- package/lib/threading/index.d.ts +11 -0
- package/lib/threading/index.d.ts.map +1 -0
- package/lib/threading/index.js +11 -0
- package/lib/threading/spawn.d.ts +28 -0
- package/lib/threading/spawn.d.ts.map +1 -0
- package/lib/threading/spawn.js +30 -0
- package/lib/threading/threads.d.ts +46 -0
- package/lib/threading/threads.d.ts.map +1 -0
- package/lib/threading/threads.js +89 -0
- package/lib/transitions/fadeTransition.d.ts +8 -0
- package/lib/transitions/fadeTransition.d.ts.map +1 -0
- package/lib/transitions/fadeTransition.js +16 -0
- package/lib/transitions/index.d.ts +11 -0
- package/lib/transitions/index.d.ts.map +1 -0
- package/lib/transitions/index.js +11 -0
- package/lib/transitions/slideTransition.d.ts +18 -0
- package/lib/transitions/slideTransition.d.ts.map +1 -0
- package/lib/transitions/slideTransition.js +14 -0
- package/lib/transitions/useTransition.d.ts +10 -0
- package/lib/transitions/useTransition.d.ts.map +1 -0
- package/lib/transitions/useTransition.js +27 -0
- package/lib/transitions/zoomInTransition.d.ts +10 -0
- package/lib/transitions/zoomInTransition.d.ts.map +1 -0
- package/lib/transitions/zoomInTransition.js +33 -0
- package/lib/transitions/zoomOutTransition.d.ts +10 -0
- package/lib/transitions/zoomOutTransition.d.ts.map +1 -0
- package/lib/transitions/zoomOutTransition.js +33 -0
- package/lib/tsconfig.build.tsbuildinfo +1 -0
- package/lib/tweening/helpers.d.ts +5 -0
- package/lib/tweening/helpers.d.ts.map +1 -0
- package/lib/tweening/helpers.js +16 -0
- package/lib/tweening/index.d.ts +11 -0
- package/lib/tweening/index.d.ts.map +1 -0
- package/lib/tweening/index.js +11 -0
- package/lib/tweening/interpolationFunctions.d.ts +38 -0
- package/lib/tweening/interpolationFunctions.d.ts.map +1 -0
- package/lib/tweening/interpolationFunctions.js +107 -0
- package/lib/tweening/spring.d.ts +20 -0
- package/lib/tweening/spring.d.ts.map +1 -0
- package/lib/tweening/spring.js +103 -0
- package/lib/tweening/timingFunctions.d.ts +46 -0
- package/lib/tweening/timingFunctions.d.ts.map +1 -0
- package/lib/tweening/timingFunctions.js +233 -0
- package/lib/tweening/tween.d.ts +3 -0
- package/lib/tweening/tween.d.ts.map +1 -0
- package/lib/tweening/tween.js +21 -0
- package/lib/types/BBox.d.ts +73 -0
- package/lib/types/BBox.d.ts.map +1 -0
- package/lib/types/BBox.js +249 -0
- package/lib/types/Canvas.d.ts +3 -0
- package/lib/types/Canvas.d.ts.map +1 -0
- package/lib/types/Canvas.js +2 -0
- package/lib/types/Color.d.ts +65 -0
- package/lib/types/Color.d.ts.map +1 -0
- package/lib/types/Color.js +185 -0
- package/lib/types/Matrix.d.ts +3 -0
- package/lib/types/Matrix.d.ts.map +1 -0
- package/lib/types/Matrix.js +10 -0
- package/lib/types/Matrix2D.d.ts +363 -0
- package/lib/types/Matrix2D.d.ts.map +1 -0
- package/lib/types/Matrix2D.js +554 -0
- package/lib/types/Origin.d.ts +17 -0
- package/lib/types/Origin.d.ts.map +1 -0
- package/lib/types/Origin.js +53 -0
- package/lib/types/Spacing.d.ts +36 -0
- package/lib/types/Spacing.d.ts.map +1 -0
- package/lib/types/Spacing.js +70 -0
- package/lib/types/Type.d.ts +9 -0
- package/lib/types/Type.d.ts.map +1 -0
- package/lib/types/Type.js +5 -0
- package/lib/types/Vector.d.ts +203 -0
- package/lib/types/Vector.d.ts.map +1 -0
- package/lib/types/Vector.js +355 -0
- package/lib/types/alignment-enums.d.ts +22 -0
- package/lib/types/alignment-enums.d.ts.map +1 -0
- package/lib/types/alignment-enums.js +25 -0
- package/lib/types/index.d.ts +17 -0
- package/lib/types/index.d.ts.map +1 -0
- package/lib/types/index.js +17 -0
- package/lib/types/vector-transformations.d.ts +20 -0
- package/lib/types/vector-transformations.d.ts.map +1 -0
- package/lib/types/vector-transformations.js +31 -0
- package/lib/utils/DetailedError.d.ts +24 -0
- package/lib/utils/DetailedError.d.ts.map +1 -0
- package/lib/utils/DetailedError.js +16 -0
- package/lib/utils/ExperimentalError.d.ts +10 -0
- package/lib/utils/ExperimentalError.d.ts.map +1 -0
- package/lib/utils/ExperimentalError.js +32 -0
- package/lib/utils/Semaphore.d.ts +12 -0
- package/lib/utils/Semaphore.d.ts.map +1 -0
- package/lib/utils/Semaphore.js +25 -0
- package/lib/utils/beginSlide.d.ts +3 -0
- package/lib/utils/beginSlide.d.ts.map +1 -0
- package/lib/utils/beginSlide.js +12 -0
- package/lib/utils/capitalize.d.ts +2 -0
- package/lib/utils/capitalize.d.ts.map +1 -0
- package/lib/utils/capitalize.js +4 -0
- package/lib/utils/createRef.d.ts +15 -0
- package/lib/utils/createRef.d.ts.map +1 -0
- package/lib/utils/createRef.js +21 -0
- package/lib/utils/createRefArray.d.ts +27 -0
- package/lib/utils/createRefArray.d.ts.map +1 -0
- package/lib/utils/createRefArray.js +49 -0
- package/lib/utils/createRefMap.d.ts +50 -0
- package/lib/utils/createRefMap.d.ts.map +1 -0
- package/lib/utils/createRefMap.js +77 -0
- package/lib/utils/debug.d.ts +24 -0
- package/lib/utils/debug.d.ts.map +1 -0
- package/lib/utils/debug.js +47 -0
- package/lib/utils/deprecate.d.ts +9 -0
- package/lib/utils/deprecate.d.ts.map +1 -0
- package/lib/utils/deprecate.js +15 -0
- package/lib/utils/errorToLog.d.ts +3 -0
- package/lib/utils/errorToLog.d.ts.map +1 -0
- package/lib/utils/errorToLog.js +8 -0
- package/lib/utils/experimentalLog.d.ts +3 -0
- package/lib/utils/experimentalLog.d.ts.map +1 -0
- package/lib/utils/experimentalLog.js +10 -0
- package/lib/utils/getContext.d.ts +2 -0
- package/lib/utils/getContext.d.ts.map +1 -0
- package/lib/utils/getContext.js +8 -0
- package/lib/utils/index.d.ts +26 -0
- package/lib/utils/index.d.ts.map +1 -0
- package/lib/utils/index.js +26 -0
- package/lib/utils/math.d.ts +15 -0
- package/lib/utils/math.d.ts.map +1 -0
- package/lib/utils/math.js +15 -0
- package/lib/utils/range.d.ts +40 -0
- package/lib/utils/range.d.ts.map +1 -0
- package/lib/utils/range.js +18 -0
- package/lib/utils/useContext.d.ts +13 -0
- package/lib/utils/useContext.d.ts.map +1 -0
- package/lib/utils/useContext.js +18 -0
- package/lib/utils/usePlayback.d.ts +8 -0
- package/lib/utils/usePlayback.d.ts.map +1 -0
- package/lib/utils/usePlayback.js +20 -0
- package/lib/utils/useScene.d.ts +17 -0
- package/lib/utils/useScene.d.ts.map +1 -0
- package/lib/utils/useScene.js +33 -0
- package/lib/utils/useThread.d.ts +8 -0
- package/lib/utils/useThread.d.ts.map +1 -0
- package/lib/utils/useThread.js +24 -0
- package/lib/utils/useTime.d.ts +19 -0
- package/lib/utils/useTime.d.ts.map +1 -0
- package/lib/utils/useTime.js +22 -0
- package/package.json +36 -0
- package/project.d.ts +24 -0
- package/shaders/common.glsl +15 -0
- package/shaders/fragment.glsl +8 -0
- package/tsconfig.project.json +14 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2022 motion-canvas
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
export declare enum LogLevel {
|
|
2
|
+
Error = "error",
|
|
3
|
+
Warn = "warn",
|
|
4
|
+
Info = "info",
|
|
5
|
+
Http = "http",
|
|
6
|
+
Verbose = "verbose",
|
|
7
|
+
Debug = "debug",
|
|
8
|
+
Silly = "silly"
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Represents an individual log entry.
|
|
12
|
+
*
|
|
13
|
+
* @remarks
|
|
14
|
+
* When displayed in the editor, the log entry will have the following format:
|
|
15
|
+
* ```
|
|
16
|
+
* inspect node ┐
|
|
17
|
+
* ┌ expand more duration ┐ │
|
|
18
|
+
* ▼ ▼ ▼
|
|
19
|
+
* ┌────────────────────────────────────────────┐
|
|
20
|
+
* │ ▶ message 300 ms (+) │
|
|
21
|
+
* ├────────────────────────────────────────────┤
|
|
22
|
+
* │ remarks │
|
|
23
|
+
* │ object │
|
|
24
|
+
* │ stacktrace │
|
|
25
|
+
* └────────────────────────────────────────────┘
|
|
26
|
+
* ```
|
|
27
|
+
*/
|
|
28
|
+
export interface LogPayload {
|
|
29
|
+
/**
|
|
30
|
+
* The log level.
|
|
31
|
+
*/
|
|
32
|
+
level?: LogLevel;
|
|
33
|
+
/**
|
|
34
|
+
* The main message of the log.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Always visible.
|
|
38
|
+
*/
|
|
39
|
+
message: string;
|
|
40
|
+
/**
|
|
41
|
+
* Additional information about the log.
|
|
42
|
+
*
|
|
43
|
+
* @remarks
|
|
44
|
+
* Visible only when the log is expanded.
|
|
45
|
+
*/
|
|
46
|
+
remarks?: string;
|
|
47
|
+
/**
|
|
48
|
+
* An object that will be serialized as JSON and displayed under the message.
|
|
49
|
+
*
|
|
50
|
+
* @remarks
|
|
51
|
+
* Visible only when the log is expanded.
|
|
52
|
+
*/
|
|
53
|
+
object?: any;
|
|
54
|
+
/**
|
|
55
|
+
* The stack trace of the log.
|
|
56
|
+
*
|
|
57
|
+
* @remarks
|
|
58
|
+
* Visible only when the log is expanded.
|
|
59
|
+
* The current stack trace can be obtained using `new Error().stack`.
|
|
60
|
+
* Both Chromium and Firefox stack traces are supported.
|
|
61
|
+
*/
|
|
62
|
+
stack?: string;
|
|
63
|
+
/**
|
|
64
|
+
* An optional duration in milliseconds.
|
|
65
|
+
*
|
|
66
|
+
* @remarks
|
|
67
|
+
* Can be used to display any duration related to the log.
|
|
68
|
+
* The value is always visible next to the message.
|
|
69
|
+
*/
|
|
70
|
+
durationMs?: number;
|
|
71
|
+
/**
|
|
72
|
+
* An optional key used to inspect a related object.
|
|
73
|
+
*
|
|
74
|
+
* @remarks
|
|
75
|
+
* This will be used together with the {@link scenes.Inspectable} interface to
|
|
76
|
+
* display additional information about the inspected object.
|
|
77
|
+
* When specified, the log will have an "inspect" button that will open the
|
|
78
|
+
* "Properties" tab and select the inspected object.
|
|
79
|
+
*/
|
|
80
|
+
inspect?: string;
|
|
81
|
+
/**
|
|
82
|
+
* Any additional information that the log may contain.
|
|
83
|
+
*/
|
|
84
|
+
[K: string]: any;
|
|
85
|
+
}
|
|
86
|
+
export declare class Logger {
|
|
87
|
+
/**
|
|
88
|
+
* Triggered when a new message is logged.
|
|
89
|
+
*/
|
|
90
|
+
get onLogged(): import("../events").Subscribable<LogPayload, import("../events").EventHandler<LogPayload>>;
|
|
91
|
+
private readonly logged;
|
|
92
|
+
readonly history: LogPayload[];
|
|
93
|
+
private profilers;
|
|
94
|
+
log(payload: LogPayload): void;
|
|
95
|
+
error(payload: string | LogPayload): void;
|
|
96
|
+
warn(payload: string | LogPayload): void;
|
|
97
|
+
info(payload: string | LogPayload): void;
|
|
98
|
+
http(payload: string | LogPayload): void;
|
|
99
|
+
verbose(payload: string | LogPayload): void;
|
|
100
|
+
debug(payload: string | LogPayload): void;
|
|
101
|
+
silly(payload: string | LogPayload): void;
|
|
102
|
+
protected logLevel(level: LogLevel, payload: string | LogPayload): void;
|
|
103
|
+
profile(id: string, payload?: LogPayload): void;
|
|
104
|
+
}
|
|
105
|
+
//# sourceMappingURL=Logger.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Logger.d.ts","sourceRoot":"","sources":["../../src/app/Logger.ts"],"names":[],"mappings":"AAEA,oBAAY,QAAQ;IAClB,KAAK,UAAU;IACf,IAAI,SAAS;IACb,IAAI,SAAS;IACb,IAAI,SAAS;IACb,OAAO,YAAY;IACnB,KAAK,UAAU;IACf,KAAK,UAAU;CAChB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,UAAU;IACzB;;OAEG;IACH,KAAK,CAAC,EAAE,QAAQ,CAAC;IAEjB;;;;;OAKG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;OAKG;IACH,MAAM,CAAC,EAAE,GAAG,CAAC;IAEb;;;;;;;OAOG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;;;;;OAMG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;OAEG;IACH,CAAC,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC;CAClB;AAED,qBAAa,MAAM;IACjB;;OAEG;IACH,IAAW,QAAQ,+FAElB;IACD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAqC;IAC5D,SAAgB,OAAO,EAAE,UAAU,EAAE,CAAM;IAE3C,OAAO,CAAC,SAAS,CAA8B;IAExC,GAAG,CAAC,OAAO,EAAE,UAAU;IAKvB,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAclC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQjC,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQpC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAIlC,KAAK,CAAC,OAAO,EAAE,MAAM,GAAG,UAAU;IAQzC,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,GAAG,UAAU;IAMzD,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,UAAU;CAgBhD"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
import { EventDispatcher } from '../events';
|
|
2
|
+
export var LogLevel;
|
|
3
|
+
(function (LogLevel) {
|
|
4
|
+
LogLevel["Error"] = "error";
|
|
5
|
+
LogLevel["Warn"] = "warn";
|
|
6
|
+
LogLevel["Info"] = "info";
|
|
7
|
+
LogLevel["Http"] = "http";
|
|
8
|
+
LogLevel["Verbose"] = "verbose";
|
|
9
|
+
LogLevel["Debug"] = "debug";
|
|
10
|
+
LogLevel["Silly"] = "silly";
|
|
11
|
+
})(LogLevel || (LogLevel = {}));
|
|
12
|
+
export class Logger {
|
|
13
|
+
constructor() {
|
|
14
|
+
this.logged = new EventDispatcher();
|
|
15
|
+
this.history = [];
|
|
16
|
+
this.profilers = {};
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Triggered when a new message is logged.
|
|
20
|
+
*/
|
|
21
|
+
get onLogged() {
|
|
22
|
+
return this.logged.subscribable;
|
|
23
|
+
}
|
|
24
|
+
log(payload) {
|
|
25
|
+
this.logged.dispatch(payload);
|
|
26
|
+
this.history.push(payload);
|
|
27
|
+
}
|
|
28
|
+
error(payload) {
|
|
29
|
+
console.error('error from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
30
|
+
this.logLevel(LogLevel.Error, payload);
|
|
31
|
+
if (window.browserError) {
|
|
32
|
+
window.browserError(typeof payload === 'string' ? payload : payload.message);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
warn(payload) {
|
|
36
|
+
console.warn('warning from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
37
|
+
this.logLevel(LogLevel.Warn, payload);
|
|
38
|
+
}
|
|
39
|
+
info(payload) {
|
|
40
|
+
console.info('info from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
41
|
+
this.logLevel(LogLevel.Info, payload);
|
|
42
|
+
}
|
|
43
|
+
http(payload) {
|
|
44
|
+
console.log('http log from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
45
|
+
this.logLevel(LogLevel.Http, payload);
|
|
46
|
+
}
|
|
47
|
+
verbose(payload) {
|
|
48
|
+
console.log('verbose log from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
49
|
+
this.logLevel(LogLevel.Verbose, payload);
|
|
50
|
+
}
|
|
51
|
+
debug(payload) {
|
|
52
|
+
this.logLevel(LogLevel.Debug, payload);
|
|
53
|
+
}
|
|
54
|
+
silly(payload) {
|
|
55
|
+
console.log('silly log from browser process:', typeof payload === 'string' ? payload : payload.message);
|
|
56
|
+
this.logLevel(LogLevel.Silly, payload);
|
|
57
|
+
}
|
|
58
|
+
logLevel(level, payload) {
|
|
59
|
+
const result = typeof payload === 'string' ? { message: payload } : payload;
|
|
60
|
+
result.level = level;
|
|
61
|
+
this.log(result);
|
|
62
|
+
}
|
|
63
|
+
profile(id, payload) {
|
|
64
|
+
const time = performance.now();
|
|
65
|
+
if (this.profilers[id]) {
|
|
66
|
+
const timeEnd = this.profilers[id];
|
|
67
|
+
delete this.profilers[id];
|
|
68
|
+
const result = payload ?? { message: id };
|
|
69
|
+
result.level ?? (result.level = LogLevel.Debug);
|
|
70
|
+
result.durationMs = time - timeEnd;
|
|
71
|
+
this.log(result);
|
|
72
|
+
return;
|
|
73
|
+
}
|
|
74
|
+
this.profilers[id] = time;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9Mb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUUxQyxNQUFNLENBQU4sSUFBWSxRQVFYO0FBUkQsV0FBWSxRQUFRO0lBQ2xCLDJCQUFlLENBQUE7SUFDZix5QkFBYSxDQUFBO0lBQ2IseUJBQWEsQ0FBQTtJQUNiLHlCQUFhLENBQUE7SUFDYiwrQkFBbUIsQ0FBQTtJQUNuQiwyQkFBZSxDQUFBO0lBQ2YsMkJBQWUsQ0FBQTtBQUNqQixDQUFDLEVBUlcsUUFBUSxLQUFSLFFBQVEsUUFRbkI7QUFzRkQsTUFBTSxPQUFPLE1BQU07SUFBbkI7UUFPbUIsV0FBTSxHQUFHLElBQUksZUFBZSxFQUFjLENBQUM7UUFDNUMsWUFBTyxHQUFpQixFQUFFLENBQUM7UUFFbkMsY0FBUyxHQUEyQixFQUFFLENBQUM7SUF1RmpELENBQUM7SUFoR0M7O09BRUc7SUFDSCxJQUFXLFFBQVE7UUFDakIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFlBQVksQ0FBQztJQUNsQyxDQUFDO0lBTU0sR0FBRyxDQUFDLE9BQW1CO1FBQzVCLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8sQ0FBQyxDQUFDO1FBQzlCLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzdCLENBQUM7SUFFTSxLQUFLLENBQUMsT0FBNEI7UUFDdkMsT0FBTyxDQUFDLEtBQUssQ0FDWCw2QkFBNkIsRUFDN0IsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3hELENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFFdkMsSUFBSyxNQUFjLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDaEMsTUFBYyxDQUFDLFlBQVksQ0FDMUIsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3hELENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVNLElBQUksQ0FBQyxPQUE0QjtRQUN0QyxPQUFPLENBQUMsSUFBSSxDQUNWLCtCQUErQixFQUMvQixPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDeEQsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRU0sSUFBSSxDQUFDLE9BQTRCO1FBQ3RDLE9BQU8sQ0FBQyxJQUFJLENBQ1YsNEJBQTRCLEVBQzVCLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUN4RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFTSxJQUFJLENBQUMsT0FBNEI7UUFDdEMsT0FBTyxDQUFDLEdBQUcsQ0FDVCxnQ0FBZ0MsRUFDaEMsT0FBTyxPQUFPLEtBQUssUUFBUSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQ3hELENBQUM7UUFDRixJQUFJLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVNLE9BQU8sQ0FBQyxPQUE0QjtRQUN6QyxPQUFPLENBQUMsR0FBRyxDQUNULG1DQUFtQyxFQUNuQyxPQUFPLE9BQU8sS0FBSyxRQUFRLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FDeEQsQ0FBQztRQUNGLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLE9BQU8sRUFBRSxPQUFPLENBQUMsQ0FBQztJQUMzQyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQTRCO1FBQ3ZDLElBQUksQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN6QyxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQTRCO1FBQ3ZDLE9BQU8sQ0FBQyxHQUFHLENBQ1QsaUNBQWlDLEVBQ2pDLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUN4RCxDQUFDO1FBQ0YsSUFBSSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pDLENBQUM7SUFFUyxRQUFRLENBQUMsS0FBZSxFQUFFLE9BQTRCO1FBQzlELE1BQU0sTUFBTSxHQUFHLE9BQU8sT0FBTyxLQUFLLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBQyxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQztRQUMxRSxNQUFNLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNyQixJQUFJLENBQUMsR0FBRyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFTSxPQUFPLENBQUMsRUFBVSxFQUFFLE9BQW9CO1FBQzdDLE1BQU0sSUFBSSxHQUFHLFdBQVcsQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUMvQixJQUFJLElBQUksQ0FBQyxTQUFTLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztZQUN2QixNQUFNLE9BQU8sR0FBRyxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sSUFBSSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsQ0FBQztZQUUxQixNQUFNLE1BQU0sR0FBRyxPQUFPLElBQUksRUFBQyxPQUFPLEVBQUUsRUFBRSxFQUFDLENBQUM7WUFDeEMsTUFBTSxDQUFDLEtBQUssS0FBWixNQUFNLENBQUMsS0FBSyxHQUFLLFFBQVEsQ0FBQyxLQUFLLEVBQUM7WUFDaEMsTUFBTSxDQUFDLFVBQVUsR0FBRyxJQUFJLEdBQUcsT0FBTyxDQUFDO1lBQ25DLElBQUksQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUM7WUFFakIsT0FBTztRQUNULENBQUM7UUFFRCxJQUFJLENBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxHQUFHLElBQUksQ0FBQztJQUM1QixDQUFDO0NBQ0YifQ==
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
import type { Scene, SceneDescriptionReload, Slide } from '../scenes';
|
|
2
|
+
export declare enum PlaybackState {
|
|
3
|
+
Playing = 0,
|
|
4
|
+
Rendering = 1,
|
|
5
|
+
Paused = 2,
|
|
6
|
+
Presenting = 3
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* A general class for managing a sequence of scenes.
|
|
10
|
+
*
|
|
11
|
+
* @remarks
|
|
12
|
+
* This class provides primitive operations that can be executed on a scene
|
|
13
|
+
* sequence, such as {@link progress} or {@link seek}.
|
|
14
|
+
*
|
|
15
|
+
* @internal
|
|
16
|
+
*/
|
|
17
|
+
export declare class PlaybackManager {
|
|
18
|
+
/**
|
|
19
|
+
* Triggered when the active scene changes.
|
|
20
|
+
*
|
|
21
|
+
* @eventProperty
|
|
22
|
+
*/
|
|
23
|
+
get onSceneChanged(): import("../events").SubscribableValueEvent<Scene<unknown>>;
|
|
24
|
+
/**
|
|
25
|
+
* Triggered when the scenes get recalculated.
|
|
26
|
+
*
|
|
27
|
+
* @remarks
|
|
28
|
+
* This event indicates that the timing of at least one scene has changed.
|
|
29
|
+
*
|
|
30
|
+
* @eventProperty
|
|
31
|
+
*/
|
|
32
|
+
get onScenesRecalculated(): import("../events").SubscribableValueEvent<Scene<unknown>[]>;
|
|
33
|
+
frame: number;
|
|
34
|
+
speed: number;
|
|
35
|
+
fps: number;
|
|
36
|
+
duration: number;
|
|
37
|
+
finished: boolean;
|
|
38
|
+
slides: Slide[];
|
|
39
|
+
previousScene: Scene | null;
|
|
40
|
+
state: PlaybackState;
|
|
41
|
+
get currentScene(): Scene;
|
|
42
|
+
set currentScene(scene: Scene);
|
|
43
|
+
private currentSceneReference;
|
|
44
|
+
private scenes;
|
|
45
|
+
setup(scenes: Scene[]): void;
|
|
46
|
+
progress(): Promise<boolean>;
|
|
47
|
+
seek(frame: number): Promise<boolean>;
|
|
48
|
+
reset(): Promise<void>;
|
|
49
|
+
reload(description?: SceneDescriptionReload<never>): void;
|
|
50
|
+
recalculate(): Promise<void>;
|
|
51
|
+
private next;
|
|
52
|
+
private findBestScene;
|
|
53
|
+
private getNextScene;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=PlaybackManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaybackManager.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackManager.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAC,KAAK,EAAE,sBAAsB,EAAE,KAAK,EAAC,MAAM,WAAW,CAAC;AAEpE,oBAAY,aAAa;IACvB,OAAO,IAAA;IACP,SAAS,IAAA;IACT,MAAM,IAAA;IACN,UAAU,IAAA;CACX;AAED;;;;;;;;GAQG;AACH,qBAAa,eAAe;IAC1B;;;;OAIG;IACH,IAAW,cAAc,+DAKxB;IAED;;;;;;;OAOG;IACH,IAAW,oBAAoB,iEAE9B;IAEM,KAAK,SAAK;IACV,KAAK,SAAK;IACV,GAAG,SAAM;IACT,QAAQ,SAAK;IACb,QAAQ,UAAS;IACjB,MAAM,EAAE,KAAK,EAAE,CAAM;IAErB,aAAa,EAAE,KAAK,GAAG,IAAI,CAAQ;IACnC,KAAK,gBAAwB;IAEpC,IAAW,YAAY,IAAI,KAAK,CAK/B;IAED,IAAW,YAAY,CAAC,KAAK,EAAE,KAAK,EAMnC;IAED,OAAO,CAAC,qBAAqB,CAAuC;IACpE,OAAO,CAAC,MAAM,CAAoC;IAE3C,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE;IAKf,QAAQ;IAKR,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA4BrC,KAAK;IAOX,MAAM,CAAC,WAAW,CAAC,EAAE,sBAAsB,CAAC,KAAK,CAAC;IAI5C,WAAW;YAyBV,IAAI;IAmClB,OAAO,CAAC,aAAa;IAYrB,OAAO,CAAC,YAAY;CAYrB"}
|
|
@@ -0,0 +1,179 @@
|
|
|
1
|
+
import { ValueDispatcher } from '../events';
|
|
2
|
+
export var PlaybackState;
|
|
3
|
+
(function (PlaybackState) {
|
|
4
|
+
PlaybackState[PlaybackState["Playing"] = 0] = "Playing";
|
|
5
|
+
PlaybackState[PlaybackState["Rendering"] = 1] = "Rendering";
|
|
6
|
+
PlaybackState[PlaybackState["Paused"] = 2] = "Paused";
|
|
7
|
+
PlaybackState[PlaybackState["Presenting"] = 3] = "Presenting";
|
|
8
|
+
})(PlaybackState || (PlaybackState = {}));
|
|
9
|
+
/**
|
|
10
|
+
* A general class for managing a sequence of scenes.
|
|
11
|
+
*
|
|
12
|
+
* @remarks
|
|
13
|
+
* This class provides primitive operations that can be executed on a scene
|
|
14
|
+
* sequence, such as {@link progress} or {@link seek}.
|
|
15
|
+
*
|
|
16
|
+
* @internal
|
|
17
|
+
*/
|
|
18
|
+
export class PlaybackManager {
|
|
19
|
+
constructor() {
|
|
20
|
+
this.frame = 0;
|
|
21
|
+
this.speed = 1;
|
|
22
|
+
this.fps = 30;
|
|
23
|
+
this.duration = 0;
|
|
24
|
+
this.finished = false;
|
|
25
|
+
this.slides = [];
|
|
26
|
+
this.previousScene = null;
|
|
27
|
+
this.state = PlaybackState.Paused;
|
|
28
|
+
this.currentSceneReference = null;
|
|
29
|
+
this.scenes = new ValueDispatcher([]);
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Triggered when the active scene changes.
|
|
33
|
+
*
|
|
34
|
+
* @eventProperty
|
|
35
|
+
*/
|
|
36
|
+
get onSceneChanged() {
|
|
37
|
+
if (this.currentSceneReference === null) {
|
|
38
|
+
throw new Error('PlaybackManager has not been properly initialized');
|
|
39
|
+
}
|
|
40
|
+
return this.currentSceneReference.subscribable;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Triggered when the scenes get recalculated.
|
|
44
|
+
*
|
|
45
|
+
* @remarks
|
|
46
|
+
* This event indicates that the timing of at least one scene has changed.
|
|
47
|
+
*
|
|
48
|
+
* @eventProperty
|
|
49
|
+
*/
|
|
50
|
+
get onScenesRecalculated() {
|
|
51
|
+
return this.scenes.subscribable;
|
|
52
|
+
}
|
|
53
|
+
get currentScene() {
|
|
54
|
+
if (this.currentSceneReference === null) {
|
|
55
|
+
throw new Error('PlaybackManager has not been properly initialized');
|
|
56
|
+
}
|
|
57
|
+
return this.currentSceneReference.current;
|
|
58
|
+
}
|
|
59
|
+
set currentScene(scene) {
|
|
60
|
+
if (!scene) {
|
|
61
|
+
throw new Error('Invalid scene.');
|
|
62
|
+
}
|
|
63
|
+
this.currentSceneReference ?? (this.currentSceneReference = new ValueDispatcher(scene));
|
|
64
|
+
this.currentSceneReference.current = scene;
|
|
65
|
+
}
|
|
66
|
+
setup(scenes) {
|
|
67
|
+
this.scenes.current = scenes;
|
|
68
|
+
this.currentScene = scenes[0];
|
|
69
|
+
}
|
|
70
|
+
async progress() {
|
|
71
|
+
this.finished = await this.next();
|
|
72
|
+
return this.finished;
|
|
73
|
+
}
|
|
74
|
+
async seek(frame) {
|
|
75
|
+
if (frame <= this.frame ||
|
|
76
|
+
(this.currentScene.isCached() && this.currentScene.lastFrame < frame)) {
|
|
77
|
+
const scene = this.findBestScene(frame);
|
|
78
|
+
if (scene !== this.currentScene) {
|
|
79
|
+
this.currentScene.stopAllMedia();
|
|
80
|
+
this.previousScene = null;
|
|
81
|
+
this.currentScene = scene;
|
|
82
|
+
this.frame = this.currentScene.firstFrame;
|
|
83
|
+
await this.currentScene.reset();
|
|
84
|
+
}
|
|
85
|
+
else if (this.frame >= frame) {
|
|
86
|
+
this.previousScene = null;
|
|
87
|
+
this.frame = this.currentScene.firstFrame;
|
|
88
|
+
await this.currentScene.reset();
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
this.finished = false;
|
|
92
|
+
while (this.frame < frame && !this.finished) {
|
|
93
|
+
this.finished = await this.next();
|
|
94
|
+
}
|
|
95
|
+
return this.finished;
|
|
96
|
+
}
|
|
97
|
+
async reset() {
|
|
98
|
+
this.previousScene = null;
|
|
99
|
+
this.currentScene = this.scenes.current[0];
|
|
100
|
+
this.frame = 0;
|
|
101
|
+
await this.currentScene.reset();
|
|
102
|
+
}
|
|
103
|
+
reload(description) {
|
|
104
|
+
this.scenes.current.forEach(scene => scene.reload(description));
|
|
105
|
+
}
|
|
106
|
+
async recalculate() {
|
|
107
|
+
this.previousScene = null;
|
|
108
|
+
this.slides = [];
|
|
109
|
+
const speed = this.speed;
|
|
110
|
+
this.frame = 0;
|
|
111
|
+
this.speed = 1;
|
|
112
|
+
const scenes = [];
|
|
113
|
+
try {
|
|
114
|
+
for (const scene of this.scenes.current) {
|
|
115
|
+
await scene.recalculate(frame => {
|
|
116
|
+
this.frame = frame;
|
|
117
|
+
});
|
|
118
|
+
this.slides.push(...scene.slides.onChanged.current);
|
|
119
|
+
scenes.push(scene);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
finally {
|
|
123
|
+
this.speed = speed;
|
|
124
|
+
}
|
|
125
|
+
this.scenes.current = scenes;
|
|
126
|
+
this.duration = this.frame;
|
|
127
|
+
}
|
|
128
|
+
async next() {
|
|
129
|
+
if (this.previousScene) {
|
|
130
|
+
await this.previousScene.next();
|
|
131
|
+
if (this.currentScene.isFinished()) {
|
|
132
|
+
this.previousScene = null;
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
this.frame += this.speed;
|
|
136
|
+
if (this.currentScene.isFinished()) {
|
|
137
|
+
return true;
|
|
138
|
+
}
|
|
139
|
+
await this.currentScene.next();
|
|
140
|
+
if (this.previousScene && this.currentScene.isAfterTransitionIn()) {
|
|
141
|
+
this.previousScene = null;
|
|
142
|
+
}
|
|
143
|
+
if (this.currentScene.canTransitionOut()) {
|
|
144
|
+
this.previousScene = this.currentScene;
|
|
145
|
+
const nextScene = this.getNextScene(this.previousScene);
|
|
146
|
+
if (nextScene) {
|
|
147
|
+
this.previousScene.stopAllMedia();
|
|
148
|
+
this.currentScene = nextScene;
|
|
149
|
+
await this.currentScene.reset(this.previousScene);
|
|
150
|
+
}
|
|
151
|
+
if (!nextScene || this.currentScene.isAfterTransitionIn()) {
|
|
152
|
+
this.previousScene = null;
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
return this.currentScene.isFinished();
|
|
156
|
+
}
|
|
157
|
+
findBestScene(frame) {
|
|
158
|
+
let lastScene = this.scenes.current[0];
|
|
159
|
+
for (const scene of this.scenes.current) {
|
|
160
|
+
if (!scene.isCached() || scene.lastFrame > frame) {
|
|
161
|
+
return scene;
|
|
162
|
+
}
|
|
163
|
+
lastScene = scene;
|
|
164
|
+
}
|
|
165
|
+
return lastScene;
|
|
166
|
+
}
|
|
167
|
+
getNextScene(scene) {
|
|
168
|
+
const scenes = this.scenes.current;
|
|
169
|
+
if (!scene) {
|
|
170
|
+
return scenes[0];
|
|
171
|
+
}
|
|
172
|
+
const index = scenes.findIndex(s => s === scene);
|
|
173
|
+
if (index < 0) {
|
|
174
|
+
return null;
|
|
175
|
+
}
|
|
176
|
+
return scenes[index + 1] ?? null;
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tNYW5hZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwcC9QbGF5YmFja01hbmFnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLGVBQWUsRUFBQyxNQUFNLFdBQVcsQ0FBQztBQUcxQyxNQUFNLENBQU4sSUFBWSxhQUtYO0FBTEQsV0FBWSxhQUFhO0lBQ3ZCLHVEQUFPLENBQUE7SUFDUCwyREFBUyxDQUFBO0lBQ1QscURBQU0sQ0FBQTtJQUNOLDZEQUFVLENBQUE7QUFDWixDQUFDLEVBTFcsYUFBYSxLQUFiLGFBQWEsUUFLeEI7QUFFRDs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sT0FBTyxlQUFlO0lBQTVCO1FBeUJTLFVBQUssR0FBRyxDQUFDLENBQUM7UUFDVixVQUFLLEdBQUcsQ0FBQyxDQUFDO1FBQ1YsUUFBRyxHQUFHLEVBQUUsQ0FBQztRQUNULGFBQVEsR0FBRyxDQUFDLENBQUM7UUFDYixhQUFRLEdBQUcsS0FBSyxDQUFDO1FBQ2pCLFdBQU0sR0FBWSxFQUFFLENBQUM7UUFFckIsa0JBQWEsR0FBaUIsSUFBSSxDQUFDO1FBQ25DLFVBQUssR0FBRyxhQUFhLENBQUMsTUFBTSxDQUFDO1FBaUI1QiwwQkFBcUIsR0FBa0MsSUFBSSxDQUFDO1FBQzVELFdBQU0sR0FBRyxJQUFJLGVBQWUsQ0FBVSxFQUFFLENBQUMsQ0FBQztJQXVJcEQsQ0FBQztJQXpMQzs7OztPQUlHO0lBQ0gsSUFBVyxjQUFjO1FBQ3ZCLElBQUksSUFBSSxDQUFDLHFCQUFxQixLQUFLLElBQUksRUFBRSxDQUFDO1lBQ3hDLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztRQUN2RSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMscUJBQXFCLENBQUMsWUFBWSxDQUFDO0lBQ2pELENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsSUFBVyxvQkFBb0I7UUFDN0IsT0FBTyxJQUFJLENBQUMsTUFBTSxD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
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { PlaybackManager, PlaybackState } from './PlaybackManager';
|
|
2
|
+
/**
|
|
3
|
+
* A read-only representation of the playback.
|
|
4
|
+
*/
|
|
5
|
+
export declare class PlaybackStatus {
|
|
6
|
+
private readonly playback;
|
|
7
|
+
constructor(playback: PlaybackManager);
|
|
8
|
+
/**
|
|
9
|
+
* Convert seconds to frames using the current framerate.
|
|
10
|
+
*
|
|
11
|
+
* @param seconds - The seconds to convert.
|
|
12
|
+
*/
|
|
13
|
+
secondsToFrames(seconds: number): number;
|
|
14
|
+
/**
|
|
15
|
+
* Convert frames to seconds using the current framerate.
|
|
16
|
+
*
|
|
17
|
+
* @param frames - The frames to convert.
|
|
18
|
+
*/
|
|
19
|
+
framesToSeconds(frames: number): number;
|
|
20
|
+
get time(): number;
|
|
21
|
+
get frame(): number;
|
|
22
|
+
get speed(): number;
|
|
23
|
+
get fps(): number;
|
|
24
|
+
get state(): PlaybackState;
|
|
25
|
+
/**
|
|
26
|
+
* The time passed since the last frame in seconds.
|
|
27
|
+
*/
|
|
28
|
+
get deltaTime(): number;
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=PlaybackStatus.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlaybackStatus.d.ts","sourceRoot":"","sources":["../../src/app/PlaybackStatus.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,aAAa,EAAC,MAAM,mBAAmB,CAAC;AAEtE;;GAEG;AACH,qBAAa,cAAc;IACN,OAAO,CAAC,QAAQ,CAAC,QAAQ;gBAAR,QAAQ,EAAE,eAAe;IAE7D;;;;OAIG;IACI,eAAe,CAAC,OAAO,EAAE,MAAM;IAItC;;;;OAIG;IACI,eAAe,CAAC,MAAM,EAAE,MAAM;IAIrC,IAAW,IAAI,IAAI,MAAM,CAExB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,KAAK,IAAI,MAAM,CAEzB;IAED,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,IAAW,KAAK,IAAI,aAAa,CAEhC;IAED;;OAEG;IACH,IAAW,SAAS,IAAI,MAAM,CAE7B;CACF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A read-only representation of the playback.
|
|
3
|
+
*/
|
|
4
|
+
export class PlaybackStatus {
|
|
5
|
+
constructor(playback) {
|
|
6
|
+
this.playback = playback;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Convert seconds to frames using the current framerate.
|
|
10
|
+
*
|
|
11
|
+
* @param seconds - The seconds to convert.
|
|
12
|
+
*/
|
|
13
|
+
secondsToFrames(seconds) {
|
|
14
|
+
return Math.ceil(seconds * this.playback.fps);
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Convert frames to seconds using the current framerate.
|
|
18
|
+
*
|
|
19
|
+
* @param frames - The frames to convert.
|
|
20
|
+
*/
|
|
21
|
+
framesToSeconds(frames) {
|
|
22
|
+
return frames / this.playback.fps;
|
|
23
|
+
}
|
|
24
|
+
get time() {
|
|
25
|
+
return this.framesToSeconds(this.playback.frame);
|
|
26
|
+
}
|
|
27
|
+
get frame() {
|
|
28
|
+
return this.playback.frame;
|
|
29
|
+
}
|
|
30
|
+
get speed() {
|
|
31
|
+
return this.playback.speed;
|
|
32
|
+
}
|
|
33
|
+
get fps() {
|
|
34
|
+
return this.playback.fps;
|
|
35
|
+
}
|
|
36
|
+
get state() {
|
|
37
|
+
return this.playback.state;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The time passed since the last frame in seconds.
|
|
41
|
+
*/
|
|
42
|
+
get deltaTime() {
|
|
43
|
+
return this.framesToSeconds(1) * this.speed;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUGxheWJhY2tTdGF0dXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBwL1BsYXliYWNrU3RhdHVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBOztHQUVHO0FBQ0gsTUFBTSxPQUFPLGNBQWM7SUFDekIsWUFBb0MsUUFBeUI7UUFBekIsYUFBUSxHQUFSLFFBQVEsQ0FBaUI7SUFBRyxDQUFDO0lBRWpFOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsT0FBZTtRQUNwQyxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxHQUFHLElBQUksQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDaEQsQ0FBQztJQUVEOzs7O09BSUc7SUFDSSxlQUFlLENBQUMsTUFBYztRQUNuQyxPQUFPLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQztJQUNwQyxDQUFDO0lBRUQsSUFBVyxJQUFJO1FBQ2IsT0FBTyxJQUFJLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDbkQsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVELElBQVcsR0FBRztRQUNaLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUM7SUFDM0IsQ0FBQztJQUVELElBQVcsS0FBSztRQUNkLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUM7SUFDN0IsQ0FBQztJQUVEOztPQUVHO0lBQ0gsSUFBVyxTQUFTO1FBQ2xCLE9BQU8sSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDO0lBQzlDLENBQUM7Q0FDRiJ9
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { Vector2 } from '../types';
|
|
2
|
+
import type { Logger } from './Logger';
|
|
3
|
+
import { PlaybackManager } from './PlaybackManager';
|
|
4
|
+
import { PlaybackStatus } from './PlaybackStatus';
|
|
5
|
+
import type { Project } from './Project';
|
|
6
|
+
export interface PlayerState extends Record<string, unknown> {
|
|
7
|
+
paused: boolean;
|
|
8
|
+
loop: boolean;
|
|
9
|
+
muted: boolean;
|
|
10
|
+
volume: number;
|
|
11
|
+
speed: number;
|
|
12
|
+
}
|
|
13
|
+
export interface PlayerSettings {
|
|
14
|
+
range: [number, number];
|
|
15
|
+
fps: number;
|
|
16
|
+
size: Vector2;
|
|
17
|
+
resolutionScale: number;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* The player logic used by the editor and embeddable player.
|
|
21
|
+
*
|
|
22
|
+
* @remarks
|
|
23
|
+
* This class builds on top of the `PlaybackManager` to provide a simple
|
|
24
|
+
* interface similar to other media players. It plays through the animation
|
|
25
|
+
* using a real-time update loop.
|
|
26
|
+
*/
|
|
27
|
+
export declare class Player {
|
|
28
|
+
private project;
|
|
29
|
+
private settings;
|
|
30
|
+
private initialState;
|
|
31
|
+
private initialFrame;
|
|
32
|
+
/**
|
|
33
|
+
* Triggered during each iteration of the update loop when the frame is ready
|
|
34
|
+
* to be rendered.
|
|
35
|
+
*
|
|
36
|
+
* @remarks
|
|
37
|
+
* Player does not perform any rendering on its own. For the animation to be
|
|
38
|
+
* visible, another class must subscribe to this event and perform the
|
|
39
|
+
* rendering itself. {@link Stage} can be used to display the animation.
|
|
40
|
+
*
|
|
41
|
+
* @eventProperty
|
|
42
|
+
*/
|
|
43
|
+
get onRender(): import("../events").Subscribable<void, import("../events").AsyncEventHandler<void>>;
|
|
44
|
+
private readonly render;
|
|
45
|
+
get onStateChanged(): import("../events").SubscribableValueEvent<PlayerState>;
|
|
46
|
+
private readonly playerState;
|
|
47
|
+
get onFrameChanged(): import("../events").SubscribableValueEvent<number>;
|
|
48
|
+
private readonly frame;
|
|
49
|
+
get onDurationChanged(): import("../events").SubscribableValueEvent<number>;
|
|
50
|
+
private readonly duration;
|
|
51
|
+
/**
|
|
52
|
+
* Triggered right after recalculation finishes.
|
|
53
|
+
*
|
|
54
|
+
* @remarks
|
|
55
|
+
* Can be used to provide visual feedback.
|
|
56
|
+
*
|
|
57
|
+
* @eventProperty
|
|
58
|
+
*/
|
|
59
|
+
get onRecalculated(): import("../events").Subscribable<void, import("../events").EventHandler<void>>;
|
|
60
|
+
private readonly recalculated;
|
|
61
|
+
readonly playback: PlaybackManager;
|
|
62
|
+
readonly status: PlaybackStatus;
|
|
63
|
+
readonly logger: Logger;
|
|
64
|
+
private readonly sharedWebGLContext;
|
|
65
|
+
private readonly lock;
|
|
66
|
+
private startTime;
|
|
67
|
+
private endTime;
|
|
68
|
+
private requestId;
|
|
69
|
+
private renderTime;
|
|
70
|
+
private requestedSeek;
|
|
71
|
+
private requestedRender;
|
|
72
|
+
private requestedRecalculation;
|
|
73
|
+
private size;
|
|
74
|
+
private resolutionScale;
|
|
75
|
+
private active;
|
|
76
|
+
private get startFrame();
|
|
77
|
+
private get endFrame();
|
|
78
|
+
private get finished();
|
|
79
|
+
constructor(project: Project, settings?: Partial<PlayerSettings>, initialState?: Partial<PlayerState>, initialFrame?: number);
|
|
80
|
+
configure(settings: PlayerSettings): Promise<void>;
|
|
81
|
+
/**
|
|
82
|
+
* Whether the given frame is inside the animation range.
|
|
83
|
+
*
|
|
84
|
+
* @param frame - The frame to check.
|
|
85
|
+
*/
|
|
86
|
+
isInRange(frame: number): boolean;
|
|
87
|
+
/**
|
|
88
|
+
* Whether the given frame is inside the user-defined range.
|
|
89
|
+
*
|
|
90
|
+
* @param frame - The frame to check.
|
|
91
|
+
*/
|
|
92
|
+
isInUserRange(frame: number): boolean;
|
|
93
|
+
requestSeek(value: number): void;
|
|
94
|
+
requestPreviousFrame(): void;
|
|
95
|
+
requestNextFrame(): void;
|
|
96
|
+
requestReset(): void;
|
|
97
|
+
requestRender(): void;
|
|
98
|
+
toggleLoop(value?: boolean): void;
|
|
99
|
+
togglePlayback(value?: boolean): void;
|
|
100
|
+
toggleAudio(value?: boolean): void;
|
|
101
|
+
setAudioVolume(value: number): void;
|
|
102
|
+
addAudioVolume(value: number): void;
|
|
103
|
+
setSpeed(value: number): void;
|
|
104
|
+
setVariables(variables: Record<string, unknown>): void;
|
|
105
|
+
/**
|
|
106
|
+
* Activate the player.
|
|
107
|
+
*
|
|
108
|
+
* @remarks
|
|
109
|
+
* A player needs to be active in order for the update loop to run. Each
|
|
110
|
+
* player is active by default.
|
|
111
|
+
*/
|
|
112
|
+
activate(): void;
|
|
113
|
+
/**
|
|
114
|
+
* Deactivate the player.
|
|
115
|
+
*
|
|
116
|
+
* @remarks
|
|
117
|
+
* Deactivating the player prevents its update loop from running. This should
|
|
118
|
+
* be done before disposing the player, to prevent it from running in the
|
|
119
|
+
* background.
|
|
120
|
+
*
|
|
121
|
+
* Just pausing the player does not stop the loop.
|
|
122
|
+
*/
|
|
123
|
+
deactivate(): void;
|
|
124
|
+
private requestRecalculation;
|
|
125
|
+
private prepare;
|
|
126
|
+
private run;
|
|
127
|
+
private request;
|
|
128
|
+
clampRange(frame: number): number;
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=Player.d.ts.map
|