@vib3code/sdk 2.0.1
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/CHANGELOG.md +118 -0
- package/DOCS/BLUEPRINT_EXECUTION_PLAN_2026-01-07.md +34 -0
- package/DOCS/CI_TESTING.md +38 -0
- package/DOCS/CLI_ONBOARDING.md +75 -0
- package/DOCS/CONTROL_REFERENCE.md +64 -0
- package/DOCS/DEV_TRACK_ANALYSIS.md +77 -0
- package/DOCS/DEV_TRACK_PLAN_2026-01-07.md +42 -0
- package/DOCS/DEV_TRACK_SESSION_2026-01-31.md +220 -0
- package/DOCS/ENV_SETUP.md +189 -0
- package/DOCS/EXPORT_FORMATS.md +417 -0
- package/DOCS/GPU_DISPOSAL_GUIDE.md +21 -0
- package/DOCS/LICENSING_TIERS.md +275 -0
- package/DOCS/MASTER_PLAN_2026-01-31.md +570 -0
- package/DOCS/OBS_SETUP_GUIDE.md +98 -0
- package/DOCS/PROJECT_SETUP.md +66 -0
- package/DOCS/RENDERER_LIFECYCLE.md +40 -0
- package/DOCS/REPO_MANIFEST.md +121 -0
- package/DOCS/SESSION_014_PLAN.md +195 -0
- package/DOCS/SESSION_LOG_2026-01-07.md +56 -0
- package/DOCS/STRATEGIC_BLUEPRINT_2026-01-07.md +72 -0
- package/DOCS/SYSTEM_AUDIT_2026-01-30.md +738 -0
- package/DOCS/SYSTEM_INVENTORY.md +520 -0
- package/DOCS/TELEMETRY_EXPORTS.md +34 -0
- package/DOCS/WEBGPU_STATUS.md +38 -0
- package/DOCS/XR_BENCHMARKS.md +608 -0
- package/LICENSE +21 -0
- package/README.md +426 -0
- package/docs/.nojekyll +0 -0
- package/docs/01-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/02-hyperspatial_ego_death.html +346 -0
- package/docs/03-post_cartesian_sublime.html +346 -0
- package/docs/04-crystalline_void_meditation.html +346 -0
- package/docs/05-quantum_decoherence_ballet.html +346 -0
- package/docs/06-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/07-hyperspatial_ego_death.html +346 -0
- package/docs/08-post_cartesian_sublime.html +346 -0
- package/docs/09-crystalline_void_meditation.html +346 -0
- package/docs/10-quantum_decoherence_ballet.html +346 -0
- package/docs/11-dissolution_of_euclidean_hegemony.html +346 -0
- package/docs/12-hyperspatial_ego_death.html +346 -0
- package/docs/13-post_cartesian_sublime.html +346 -0
- package/docs/index.html +794 -0
- package/docs/test-hub.html +441 -0
- package/docs/url-state.js +102 -0
- package/docs/vib3-exports/01-quantum-quantum-tetrahedron-lattice.html +489 -0
- package/docs/vib3-exports/02-quantum-quantum-hypersphere-matrix.html +489 -0
- package/docs/vib3-exports/03-quantum-quantum-hypertetra-fractal.html +489 -0
- package/docs/vib3-exports/04-faceted-faceted-crystal-structure.html +407 -0
- package/docs/vib3-exports/05-faceted-faceted-klein-bottle.html +407 -0
- package/docs/vib3-exports/06-faceted-faceted-hypertetra-torus.html +407 -0
- package/docs/vib3-exports/07-holographic-holographic-wave-field.html +457 -0
- package/docs/vib3-exports/08-holographic-holographic-hypersphere-sphere.html +457 -0
- package/docs/vib3-exports/09-holographic-holographic-hypertetra-crystal.html +457 -0
- package/docs/vib3-exports/index.html +238 -0
- package/docs/webgpu-live.html +702 -0
- package/package.json +367 -0
- package/src/advanced/AIPresetGenerator.js +777 -0
- package/src/advanced/MIDIController.js +703 -0
- package/src/advanced/OffscreenWorker.js +1051 -0
- package/src/advanced/WebGPUCompute.js +1051 -0
- package/src/advanced/WebXRRenderer.js +680 -0
- package/src/agent/cli/AgentCLI.js +615 -0
- package/src/agent/cli/index.js +14 -0
- package/src/agent/index.js +73 -0
- package/src/agent/mcp/MCPServer.js +950 -0
- package/src/agent/mcp/index.js +9 -0
- package/src/agent/mcp/tools.js +548 -0
- package/src/agent/telemetry/EventStream.js +669 -0
- package/src/agent/telemetry/Instrumentation.js +618 -0
- package/src/agent/telemetry/TelemetryExporters.js +427 -0
- package/src/agent/telemetry/TelemetryService.js +464 -0
- package/src/agent/telemetry/index.js +52 -0
- package/src/benchmarks/BenchmarkRunner.js +381 -0
- package/src/benchmarks/MetricsCollector.js +299 -0
- package/src/benchmarks/index.js +9 -0
- package/src/benchmarks/scenes.js +259 -0
- package/src/cli/index.js +675 -0
- package/src/config/ApiConfig.js +88 -0
- package/src/core/CanvasManager.js +217 -0
- package/src/core/ErrorReporter.js +117 -0
- package/src/core/ParameterMapper.js +333 -0
- package/src/core/Parameters.js +396 -0
- package/src/core/RendererContracts.js +200 -0
- package/src/core/UnifiedResourceManager.js +370 -0
- package/src/core/VIB3Engine.js +636 -0
- package/src/core/renderers/FacetedRendererAdapter.js +32 -0
- package/src/core/renderers/HolographicRendererAdapter.js +29 -0
- package/src/core/renderers/QuantumRendererAdapter.js +29 -0
- package/src/core/renderers/RendererLifecycleManager.js +63 -0
- package/src/creative/ColorPresetsSystem.js +980 -0
- package/src/creative/ParameterTimeline.js +1061 -0
- package/src/creative/PostProcessingPipeline.js +1113 -0
- package/src/creative/TransitionAnimator.js +683 -0
- package/src/export/CSSExporter.js +226 -0
- package/src/export/CardGeneratorBase.js +279 -0
- package/src/export/ExportManager.js +580 -0
- package/src/export/FacetedCardGenerator.js +279 -0
- package/src/export/HolographicCardGenerator.js +543 -0
- package/src/export/LottieExporter.js +552 -0
- package/src/export/QuantumCardGenerator.js +315 -0
- package/src/export/SVGExporter.js +519 -0
- package/src/export/ShaderExporter.js +903 -0
- package/src/export/TradingCardGenerator.js +3055 -0
- package/src/export/TradingCardManager.js +181 -0
- package/src/export/VIB3PackageExporter.js +559 -0
- package/src/export/index.js +14 -0
- package/src/export/systems/TradingCardSystemFaceted.js +494 -0
- package/src/export/systems/TradingCardSystemHolographic.js +452 -0
- package/src/export/systems/TradingCardSystemQuantum.js +411 -0
- package/src/faceted/FacetedSystem.js +963 -0
- package/src/features/CollectionManager.js +433 -0
- package/src/gallery/CollectionManager.js +240 -0
- package/src/gallery/GallerySystem.js +485 -0
- package/src/geometry/GeometryFactory.js +314 -0
- package/src/geometry/GeometryLibrary.js +72 -0
- package/src/geometry/buffers/BufferBuilder.js +338 -0
- package/src/geometry/buffers/index.js +18 -0
- package/src/geometry/generators/Crystal.js +420 -0
- package/src/geometry/generators/Fractal.js +298 -0
- package/src/geometry/generators/KleinBottle.js +197 -0
- package/src/geometry/generators/Sphere.js +192 -0
- package/src/geometry/generators/Tesseract.js +160 -0
- package/src/geometry/generators/Tetrahedron.js +225 -0
- package/src/geometry/generators/Torus.js +304 -0
- package/src/geometry/generators/Wave.js +341 -0
- package/src/geometry/index.js +142 -0
- package/src/geometry/warp/HypersphereCore.js +211 -0
- package/src/geometry/warp/HypertetraCore.js +386 -0
- package/src/geometry/warp/index.js +57 -0
- package/src/holograms/HolographicVisualizer.js +1073 -0
- package/src/holograms/RealHolographicSystem.js +966 -0
- package/src/holograms/variantRegistry.js +69 -0
- package/src/integrations/FigmaPlugin.js +854 -0
- package/src/integrations/OBSMode.js +754 -0
- package/src/integrations/ThreeJsPackage.js +660 -0
- package/src/integrations/TouchDesignerExport.js +552 -0
- package/src/integrations/frameworks/Vib3React.js +591 -0
- package/src/integrations/frameworks/Vib3Svelte.js +654 -0
- package/src/integrations/frameworks/Vib3Vue.js +628 -0
- package/src/llm/LLMParameterInterface.js +240 -0
- package/src/llm/LLMParameterUI.js +577 -0
- package/src/math/Mat4x4.js +708 -0
- package/src/math/Projection.js +341 -0
- package/src/math/Rotor4D.js +637 -0
- package/src/math/Vec4.js +476 -0
- package/src/math/constants.js +164 -0
- package/src/math/index.js +68 -0
- package/src/math/projections.js +54 -0
- package/src/math/rotations.js +196 -0
- package/src/quantum/QuantumEngine.js +906 -0
- package/src/quantum/QuantumVisualizer.js +1103 -0
- package/src/reactivity/ReactivityConfig.js +499 -0
- package/src/reactivity/ReactivityManager.js +586 -0
- package/src/reactivity/SpatialInputSystem.js +1783 -0
- package/src/reactivity/index.js +93 -0
- package/src/render/CommandBuffer.js +465 -0
- package/src/render/MultiCanvasBridge.js +340 -0
- package/src/render/RenderCommand.js +514 -0
- package/src/render/RenderResourceRegistry.js +523 -0
- package/src/render/RenderState.js +552 -0
- package/src/render/RenderTarget.js +512 -0
- package/src/render/ShaderLoader.js +253 -0
- package/src/render/ShaderProgram.js +599 -0
- package/src/render/UnifiedRenderBridge.js +496 -0
- package/src/render/backends/WebGLBackend.js +1108 -0
- package/src/render/backends/WebGPUBackend.js +1409 -0
- package/src/render/commands/CommandBufferExecutor.js +607 -0
- package/src/render/commands/RenderCommandBuffer.js +661 -0
- package/src/render/commands/index.js +17 -0
- package/src/render/index.js +367 -0
- package/src/scene/Disposable.js +498 -0
- package/src/scene/MemoryPool.js +618 -0
- package/src/scene/Node4D.js +697 -0
- package/src/scene/ResourceManager.js +599 -0
- package/src/scene/Scene4D.js +540 -0
- package/src/scene/index.js +98 -0
- package/src/schemas/error.schema.json +84 -0
- package/src/schemas/extension.schema.json +88 -0
- package/src/schemas/index.js +214 -0
- package/src/schemas/parameters.schema.json +142 -0
- package/src/schemas/tool-pack.schema.json +44 -0
- package/src/schemas/tool-response.schema.json +127 -0
- package/src/shaders/common/fullscreen.vert.glsl +5 -0
- package/src/shaders/common/fullscreen.vert.wgsl +17 -0
- package/src/shaders/common/geometry24.glsl +65 -0
- package/src/shaders/common/geometry24.wgsl +54 -0
- package/src/shaders/common/rotation4d.glsl +85 -0
- package/src/shaders/common/rotation4d.wgsl +86 -0
- package/src/shaders/common/uniforms.glsl +44 -0
- package/src/shaders/common/uniforms.wgsl +48 -0
- package/src/shaders/faceted/faceted.frag.glsl +129 -0
- package/src/shaders/faceted/faceted.frag.wgsl +164 -0
- package/src/shaders/holographic/holographic.frag.glsl +406 -0
- package/src/shaders/holographic/holographic.frag.wgsl +185 -0
- package/src/shaders/quantum/quantum.frag.glsl +513 -0
- package/src/shaders/quantum/quantum.frag.wgsl +361 -0
- package/src/testing/ParallelTestFramework.js +519 -0
- package/src/testing/__snapshots__/exportFormats.test.js.snap +24 -0
- package/src/testing/exportFormats.test.js +8 -0
- package/src/testing/projections.test.js +14 -0
- package/src/testing/rotations.test.js +37 -0
- package/src/ui/InteractivityMenu.js +516 -0
- package/src/ui/StatusManager.js +96 -0
- package/src/ui/adaptive/renderers/webgpu/BufferLayout.ts +252 -0
- package/src/ui/adaptive/renderers/webgpu/PolytopeInstanceBuffer.ts +144 -0
- package/src/ui/adaptive/renderers/webgpu/TripleBufferedUniform.ts +170 -0
- package/src/ui/adaptive/renderers/webgpu/WebGPURenderer.ts +735 -0
- package/src/ui/adaptive/renderers/webgpu/index.ts +112 -0
- package/src/variations/VariationManager.js +431 -0
- package/src/viewer/AudioReactivity.js +505 -0
- package/src/viewer/CardBending.js +481 -0
- package/src/viewer/GalleryUI.js +832 -0
- package/src/viewer/ReactivityManager.js +590 -0
- package/src/viewer/TradingCardExporter.js +600 -0
- package/src/viewer/ViewerPortal.js +374 -0
- package/src/viewer/index.js +12 -0
- package/src/wasm/WasmLoader.js +296 -0
- package/src/wasm/index.js +132 -0
- package/tools/agentic/mcpTools.js +88 -0
- package/tools/cli/agent-cli.js +92 -0
- package/tools/export/formats.js +24 -0
- package/tools/math/rotation-baseline.mjs +64 -0
- package/tools/shader-sync-verify.js +937 -0
- package/tools/telemetry/manifestPipeline.js +141 -0
- package/tools/telemetry/telemetryEvents.js +35 -0
- package/types/adaptive-sdk.d.ts +185 -0
- package/types/advanced/AIPresetGenerator.d.ts +81 -0
- package/types/advanced/MIDIController.d.ts +100 -0
- package/types/advanced/OffscreenWorker.d.ts +82 -0
- package/types/advanced/WebGPUCompute.d.ts +52 -0
- package/types/advanced/WebXRRenderer.d.ts +77 -0
- package/types/advanced/index.d.ts +46 -0
- package/types/core/ErrorReporter.d.ts +50 -0
- package/types/core/VIB3Engine.d.ts +204 -0
- package/types/creative/ColorPresetsSystem.d.ts +91 -0
- package/types/creative/ParameterTimeline.d.ts +74 -0
- package/types/creative/PostProcessingPipeline.d.ts +109 -0
- package/types/creative/TransitionAnimator.d.ts +71 -0
- package/types/creative/index.d.ts +35 -0
- package/types/integrations/FigmaPlugin.d.ts +46 -0
- package/types/integrations/OBSMode.d.ts +74 -0
- package/types/integrations/ThreeJsPackage.d.ts +62 -0
- package/types/integrations/TouchDesignerExport.d.ts +36 -0
- package/types/integrations/Vib3React.d.ts +74 -0
- package/types/integrations/Vib3Svelte.d.ts +63 -0
- package/types/integrations/Vib3Vue.d.ts +55 -0
- package/types/integrations/index.d.ts +52 -0
- package/types/reactivity/SpatialInputSystem.d.ts +173 -0
- package/types/reactivity/index.d.ts +394 -0
- package/types/render/CommandBuffer.d.ts +169 -0
- package/types/render/RenderCommand.d.ts +312 -0
- package/types/render/RenderState.d.ts +279 -0
- package/types/render/RenderTarget.d.ts +254 -0
- package/types/render/ShaderProgram.d.ts +277 -0
- package/types/render/UnifiedRenderBridge.d.ts +143 -0
- package/types/render/WebGLBackend.d.ts +168 -0
- package/types/render/WebGPUBackend.d.ts +186 -0
- package/types/render/index.d.ts +141 -0
|
@@ -0,0 +1,173 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpatialInputSystem TypeScript Definitions
|
|
3
|
+
* VIB3+ SDK - Universal Spatial Input System
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
import { ParameterUpdateFn } from '../reactivity/index';
|
|
7
|
+
|
|
8
|
+
/** Spatial input source types */
|
|
9
|
+
export declare const SOURCE_TYPES: {
|
|
10
|
+
readonly deviceTilt: 'deviceTilt';
|
|
11
|
+
readonly mousePosition: 'mousePosition';
|
|
12
|
+
readonly gyroscope: 'gyroscope';
|
|
13
|
+
readonly gamepad: 'gamepad';
|
|
14
|
+
readonly perspective: 'perspective';
|
|
15
|
+
readonly programmatic: 'programmatic';
|
|
16
|
+
readonly audio: 'audio';
|
|
17
|
+
readonly midi: 'midi';
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
export type SourceType = typeof SOURCE_TYPES[keyof typeof SOURCE_TYPES];
|
|
21
|
+
|
|
22
|
+
/** Spatial axis names */
|
|
23
|
+
export declare const SPATIAL_AXES: readonly [
|
|
24
|
+
'pitch', 'yaw', 'roll', 'x', 'y', 'z', 'intensity', 'velocity'
|
|
25
|
+
];
|
|
26
|
+
|
|
27
|
+
export type SpatialAxis = typeof SPATIAL_AXES[number];
|
|
28
|
+
|
|
29
|
+
/** Spatial state object */
|
|
30
|
+
export interface SpatialState {
|
|
31
|
+
pitch: number;
|
|
32
|
+
yaw: number;
|
|
33
|
+
roll: number;
|
|
34
|
+
x: number;
|
|
35
|
+
y: number;
|
|
36
|
+
z: number;
|
|
37
|
+
intensity: number;
|
|
38
|
+
velocity: number;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
/** Constructor options */
|
|
42
|
+
export interface SpatialInputOptions {
|
|
43
|
+
sensitivity?: number;
|
|
44
|
+
smoothing?: number;
|
|
45
|
+
onParameterUpdate?: ParameterUpdateFn;
|
|
46
|
+
autoRegisterGlobals?: boolean;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** Source entry info */
|
|
50
|
+
export interface SourceInfo {
|
|
51
|
+
name: string;
|
|
52
|
+
type: SourceType;
|
|
53
|
+
active: boolean;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Mapping entry */
|
|
57
|
+
export interface MappingEntry {
|
|
58
|
+
axis: string;
|
|
59
|
+
target: string;
|
|
60
|
+
scale?: number;
|
|
61
|
+
clampRange?: [number, number];
|
|
62
|
+
blendMode?: string;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
/** Profile definition */
|
|
66
|
+
export interface ProfileDef {
|
|
67
|
+
name: string;
|
|
68
|
+
mappings: MappingEntry[];
|
|
69
|
+
meta?: Record<string, any>;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Built-in profile names */
|
|
73
|
+
export type BuiltinProfile =
|
|
74
|
+
| 'cardTilt'
|
|
75
|
+
| 'wearablePerspective'
|
|
76
|
+
| 'gameAsset'
|
|
77
|
+
| 'vjAudioSpatial'
|
|
78
|
+
| 'uiElement'
|
|
79
|
+
| 'immersiveXR';
|
|
80
|
+
|
|
81
|
+
/** SpatialInputSystem event names */
|
|
82
|
+
export type SpatialEvent =
|
|
83
|
+
| 'sourceAdded'
|
|
84
|
+
| 'sourceRemoved'
|
|
85
|
+
| 'mappingChanged'
|
|
86
|
+
| 'mappingRemoved'
|
|
87
|
+
| 'mappingsCleared'
|
|
88
|
+
| 'profileLoaded'
|
|
89
|
+
| 'profileCreated'
|
|
90
|
+
| 'enabled'
|
|
91
|
+
| 'disabled'
|
|
92
|
+
| 'dramaticModeChanged'
|
|
93
|
+
| 'configImported'
|
|
94
|
+
| 'midiInput';
|
|
95
|
+
|
|
96
|
+
/**
|
|
97
|
+
* Universal spatial input mapping system.
|
|
98
|
+
* Decouples "card tilting" from physical device orientation.
|
|
99
|
+
* Any input source maps to a normalized spatial state, which maps to visualization parameters.
|
|
100
|
+
*/
|
|
101
|
+
export declare class SpatialInputSystem {
|
|
102
|
+
readonly sources: Map<string, any>;
|
|
103
|
+
readonly mappings: Map<string, any>;
|
|
104
|
+
readonly profiles: Map<string, ProfileDef>;
|
|
105
|
+
sensitivity: number;
|
|
106
|
+
smoothingFactor: number;
|
|
107
|
+
dramaticMode: boolean;
|
|
108
|
+
enabled: boolean;
|
|
109
|
+
activeProfile: string | null;
|
|
110
|
+
spatialState: SpatialState;
|
|
111
|
+
smoothedState: SpatialState;
|
|
112
|
+
|
|
113
|
+
constructor(options?: SpatialInputOptions);
|
|
114
|
+
|
|
115
|
+
// Source management
|
|
116
|
+
addSource(name: string, type: SourceType, config?: Record<string, any>): boolean;
|
|
117
|
+
removeSource(name: string): boolean;
|
|
118
|
+
hasSource(name: string): boolean;
|
|
119
|
+
listSources(): SourceInfo[];
|
|
120
|
+
|
|
121
|
+
// Mapping management
|
|
122
|
+
setMapping(axis: string, target: string, scale?: number, clampRange?: [number, number], blendMode?: string): boolean;
|
|
123
|
+
removeMapping(axis: string, target: string): boolean;
|
|
124
|
+
clearMappings(): void;
|
|
125
|
+
listMappings(): MappingEntry[];
|
|
126
|
+
|
|
127
|
+
// Profile management
|
|
128
|
+
loadProfile(name: string | BuiltinProfile): boolean;
|
|
129
|
+
createProfile(name: string, mappings: MappingEntry[], meta?: Record<string, any>): boolean;
|
|
130
|
+
removeProfile(name: string): boolean;
|
|
131
|
+
listProfiles(): string[];
|
|
132
|
+
getProfile(name: string): ProfileDef | null;
|
|
133
|
+
|
|
134
|
+
// Custom targets
|
|
135
|
+
addCustomTarget(name: string): void;
|
|
136
|
+
removeCustomTarget(name: string): void;
|
|
137
|
+
|
|
138
|
+
// Enable/disable
|
|
139
|
+
enable(): void;
|
|
140
|
+
disable(): void;
|
|
141
|
+
isEnabled(): boolean;
|
|
142
|
+
|
|
143
|
+
// Configuration
|
|
144
|
+
setSensitivity(value: number): void;
|
|
145
|
+
setSmoothing(value: number): void;
|
|
146
|
+
setAxisSmoothing(axis: SpatialAxis, value: number): void;
|
|
147
|
+
setDramaticMode(enabled: boolean): void;
|
|
148
|
+
setParameterUpdateFn(fn: ParameterUpdateFn): void;
|
|
149
|
+
|
|
150
|
+
// Input
|
|
151
|
+
feedInput(sourceType: SourceType, data: Record<string, any>): void;
|
|
152
|
+
|
|
153
|
+
// State
|
|
154
|
+
getState(): SpatialState;
|
|
155
|
+
getRawState(): SpatialState;
|
|
156
|
+
|
|
157
|
+
// Serialization
|
|
158
|
+
exportConfig(): Record<string, any>;
|
|
159
|
+
importConfig(config: Record<string, any>): boolean;
|
|
160
|
+
|
|
161
|
+
// Frame processing
|
|
162
|
+
processFrame(deltaTime: number): void;
|
|
163
|
+
|
|
164
|
+
// Events
|
|
165
|
+
on(event: SpatialEvent, callback: (...args: any[]) => void): void;
|
|
166
|
+
off(event: SpatialEvent, callback: (...args: any[]) => void): void;
|
|
167
|
+
|
|
168
|
+
// Lifecycle
|
|
169
|
+
destroy(): void;
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
/** Factory function */
|
|
173
|
+
export declare function createSpatialInputSystem(options?: SpatialInputOptions): SpatialInputSystem;
|
|
@@ -0,0 +1,394 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Reactivity Module TypeScript Definitions
|
|
3
|
+
* VIB3+ SDK - Audio/Tilt/Interaction Reactivity System
|
|
4
|
+
*/
|
|
5
|
+
|
|
6
|
+
// ============================================================================
|
|
7
|
+
// Constants
|
|
8
|
+
// ============================================================================
|
|
9
|
+
|
|
10
|
+
/** Valid parameter names that can be targeted by reactivity */
|
|
11
|
+
export declare const TARGETABLE_PARAMETERS: readonly [
|
|
12
|
+
'rot4dXY', 'rot4dXZ', 'rot4dYZ',
|
|
13
|
+
'rot4dXW', 'rot4dYW', 'rot4dZW',
|
|
14
|
+
'gridDensity', 'morphFactor', 'chaos', 'speed',
|
|
15
|
+
'hue', 'intensity', 'saturation', 'dimension',
|
|
16
|
+
'geometry'
|
|
17
|
+
];
|
|
18
|
+
|
|
19
|
+
/** Targetable parameter name type */
|
|
20
|
+
export type TargetableParameter = typeof TARGETABLE_PARAMETERS[number];
|
|
21
|
+
|
|
22
|
+
/** Audio band names */
|
|
23
|
+
export declare const AUDIO_BANDS: readonly ['bass', 'mid', 'high'];
|
|
24
|
+
export type AudioBand = typeof AUDIO_BANDS[number];
|
|
25
|
+
|
|
26
|
+
/** Reactivity blend modes */
|
|
27
|
+
export declare const BLEND_MODES: readonly ['add', 'multiply', 'replace', 'max', 'min'];
|
|
28
|
+
export type BlendMode = typeof BLEND_MODES[number];
|
|
29
|
+
|
|
30
|
+
/** Interaction modes for different input types */
|
|
31
|
+
export declare const INTERACTION_MODES: {
|
|
32
|
+
readonly mouse: readonly ['rotation', 'velocity', 'shimmer', 'attract', 'repel', 'none'];
|
|
33
|
+
readonly click: readonly ['burst', 'blast', 'ripple', 'pulse', 'none'];
|
|
34
|
+
readonly scroll: readonly ['cycle', 'wave', 'sweep', 'zoom', 'morph', 'none'];
|
|
35
|
+
};
|
|
36
|
+
|
|
37
|
+
export type MouseMode = typeof INTERACTION_MODES.mouse[number];
|
|
38
|
+
export type ClickMode = typeof INTERACTION_MODES.click[number];
|
|
39
|
+
export type ScrollMode = typeof INTERACTION_MODES.scroll[number];
|
|
40
|
+
|
|
41
|
+
// ============================================================================
|
|
42
|
+
// Config Interfaces
|
|
43
|
+
// ============================================================================
|
|
44
|
+
|
|
45
|
+
/** Audio band target mapping */
|
|
46
|
+
export interface AudioTarget {
|
|
47
|
+
param: TargetableParameter;
|
|
48
|
+
weight: number;
|
|
49
|
+
mode: BlendMode;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
/** Audio band configuration */
|
|
53
|
+
export interface AudioBandConfig {
|
|
54
|
+
enabled: boolean;
|
|
55
|
+
sensitivity: number;
|
|
56
|
+
frequencyRange: [number, number];
|
|
57
|
+
targets: AudioTarget[];
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
/** Audio reactivity configuration */
|
|
61
|
+
export interface AudioConfig {
|
|
62
|
+
enabled: boolean;
|
|
63
|
+
globalSensitivity: number;
|
|
64
|
+
smoothing: number;
|
|
65
|
+
bands: {
|
|
66
|
+
bass: AudioBandConfig;
|
|
67
|
+
mid: AudioBandConfig;
|
|
68
|
+
high: AudioBandConfig;
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
/** Tilt axis mapping */
|
|
73
|
+
export interface TiltAxisMapping {
|
|
74
|
+
target: TargetableParameter;
|
|
75
|
+
scale: number;
|
|
76
|
+
clamp: [number, number];
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Tilt reactivity configuration */
|
|
80
|
+
export interface TiltConfig {
|
|
81
|
+
enabled: boolean;
|
|
82
|
+
sensitivity: number;
|
|
83
|
+
smoothing: number;
|
|
84
|
+
dramaticMode: boolean;
|
|
85
|
+
calibrated: boolean;
|
|
86
|
+
calibrationOffset: { alpha: number; beta: number; gamma: number };
|
|
87
|
+
mappings: {
|
|
88
|
+
alpha: TiltAxisMapping;
|
|
89
|
+
beta: TiltAxisMapping;
|
|
90
|
+
gamma: TiltAxisMapping;
|
|
91
|
+
};
|
|
92
|
+
dramaticMappings: {
|
|
93
|
+
alpha: TiltAxisMapping;
|
|
94
|
+
beta: TiltAxisMapping;
|
|
95
|
+
gamma: TiltAxisMapping;
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
|
|
99
|
+
/** Mouse interaction configuration */
|
|
100
|
+
export interface MouseInteractionConfig {
|
|
101
|
+
enabled: boolean;
|
|
102
|
+
mode: MouseMode;
|
|
103
|
+
sensitivity: number;
|
|
104
|
+
smoothing: number;
|
|
105
|
+
targets: TargetableParameter[];
|
|
106
|
+
invertX: boolean;
|
|
107
|
+
invertY: boolean;
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
/** Click interaction configuration */
|
|
111
|
+
export interface ClickInteractionConfig {
|
|
112
|
+
enabled: boolean;
|
|
113
|
+
mode: ClickMode;
|
|
114
|
+
intensity: number;
|
|
115
|
+
decay: number;
|
|
116
|
+
target: TargetableParameter;
|
|
117
|
+
maxValue: number;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
/** Scroll interaction configuration */
|
|
121
|
+
export interface ScrollInteractionConfig {
|
|
122
|
+
enabled: boolean;
|
|
123
|
+
mode: ScrollMode;
|
|
124
|
+
sensitivity: number;
|
|
125
|
+
target: TargetableParameter;
|
|
126
|
+
wrap: boolean;
|
|
127
|
+
step: number;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
/** Touch interaction configuration */
|
|
131
|
+
export interface TouchInteractionConfig {
|
|
132
|
+
enabled: boolean;
|
|
133
|
+
multiTouchEnabled: boolean;
|
|
134
|
+
pinchZoom: {
|
|
135
|
+
enabled: boolean;
|
|
136
|
+
target: TargetableParameter;
|
|
137
|
+
sensitivity: number;
|
|
138
|
+
};
|
|
139
|
+
twoFingerRotate: {
|
|
140
|
+
enabled: boolean;
|
|
141
|
+
target: TargetableParameter;
|
|
142
|
+
sensitivity: number;
|
|
143
|
+
};
|
|
144
|
+
swipeGestures: boolean;
|
|
145
|
+
}
|
|
146
|
+
|
|
147
|
+
/** Interaction reactivity configuration */
|
|
148
|
+
export interface InteractionConfig {
|
|
149
|
+
enabled: boolean;
|
|
150
|
+
mouse: MouseInteractionConfig;
|
|
151
|
+
click: ClickInteractionConfig;
|
|
152
|
+
scroll: ScrollInteractionConfig;
|
|
153
|
+
touch: TouchInteractionConfig;
|
|
154
|
+
}
|
|
155
|
+
|
|
156
|
+
/** Complete reactivity configuration object */
|
|
157
|
+
export interface ReactivityConfigData {
|
|
158
|
+
version: string;
|
|
159
|
+
audio: AudioConfig;
|
|
160
|
+
tilt: TiltConfig;
|
|
161
|
+
interaction: InteractionConfig;
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
/** Default reactivity configuration */
|
|
165
|
+
export declare const DEFAULT_REACTIVITY_CONFIG: ReactivityConfigData;
|
|
166
|
+
|
|
167
|
+
/** Validation result from config validation */
|
|
168
|
+
export interface ValidationResult {
|
|
169
|
+
valid: boolean;
|
|
170
|
+
errors: string[];
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// ============================================================================
|
|
174
|
+
// ReactivityConfig
|
|
175
|
+
// ============================================================================
|
|
176
|
+
|
|
177
|
+
/**
|
|
178
|
+
* ReactivityConfig class
|
|
179
|
+
* Manages, validates, and serializes reactivity configuration.
|
|
180
|
+
* Exported with VIB3Package for portable behavior.
|
|
181
|
+
*/
|
|
182
|
+
export declare class ReactivityConfig {
|
|
183
|
+
constructor(config?: Partial<ReactivityConfigData> | null);
|
|
184
|
+
|
|
185
|
+
/** Get full config (deep copy) */
|
|
186
|
+
getConfig(): ReactivityConfigData;
|
|
187
|
+
|
|
188
|
+
/** Get audio config (deep copy) */
|
|
189
|
+
getAudioConfig(): AudioConfig;
|
|
190
|
+
|
|
191
|
+
/** Get tilt config (deep copy) */
|
|
192
|
+
getTiltConfig(): TiltConfig;
|
|
193
|
+
|
|
194
|
+
/** Get interaction config (deep copy) */
|
|
195
|
+
getInteractionConfig(): InteractionConfig;
|
|
196
|
+
|
|
197
|
+
/** Merge partial config into current config */
|
|
198
|
+
merge(partialConfig: Partial<ReactivityConfigData>): this;
|
|
199
|
+
|
|
200
|
+
/** Validate the configuration */
|
|
201
|
+
validate(): ValidationResult;
|
|
202
|
+
|
|
203
|
+
/** Enable/disable audio reactivity */
|
|
204
|
+
setAudioEnabled(enabled: boolean): this;
|
|
205
|
+
|
|
206
|
+
/** Set audio band configuration */
|
|
207
|
+
setAudioBand(band: AudioBand, config: Partial<AudioBandConfig>): this;
|
|
208
|
+
|
|
209
|
+
/** Add a target to an audio band */
|
|
210
|
+
addAudioTarget(
|
|
211
|
+
band: AudioBand,
|
|
212
|
+
param: TargetableParameter,
|
|
213
|
+
weight?: number,
|
|
214
|
+
mode?: BlendMode
|
|
215
|
+
): this;
|
|
216
|
+
|
|
217
|
+
/** Clear all targets from an audio band */
|
|
218
|
+
clearAudioTargets(band: AudioBand): this;
|
|
219
|
+
|
|
220
|
+
/** Enable/disable tilt reactivity */
|
|
221
|
+
setTiltEnabled(enabled: boolean): this;
|
|
222
|
+
|
|
223
|
+
/** Set tilt dramatic mode */
|
|
224
|
+
setTiltDramaticMode(enabled: boolean): this;
|
|
225
|
+
|
|
226
|
+
/** Set tilt sensitivity (0.1-10) */
|
|
227
|
+
setTiltSensitivity(sensitivity: number): this;
|
|
228
|
+
|
|
229
|
+
/** Set tilt axis mapping */
|
|
230
|
+
setTiltMapping(
|
|
231
|
+
axis: 'alpha' | 'beta' | 'gamma',
|
|
232
|
+
target: TargetableParameter,
|
|
233
|
+
scale: number,
|
|
234
|
+
clamp?: [number, number]
|
|
235
|
+
): this;
|
|
236
|
+
|
|
237
|
+
/** Enable/disable interaction */
|
|
238
|
+
setInteractionEnabled(enabled: boolean): this;
|
|
239
|
+
|
|
240
|
+
/** Set mouse interaction mode */
|
|
241
|
+
setMouseMode(mode: MouseMode, options?: Partial<MouseInteractionConfig>): this;
|
|
242
|
+
|
|
243
|
+
/** Set click interaction mode */
|
|
244
|
+
setClickMode(mode: ClickMode, options?: Partial<ClickInteractionConfig>): this;
|
|
245
|
+
|
|
246
|
+
/** Set scroll interaction mode */
|
|
247
|
+
setScrollMode(mode: ScrollMode, options?: Partial<ScrollInteractionConfig>): this;
|
|
248
|
+
|
|
249
|
+
/** Export to JSON string */
|
|
250
|
+
toJSON(): string;
|
|
251
|
+
|
|
252
|
+
/** Import from JSON string or object */
|
|
253
|
+
static fromJSON(json: string | ReactivityConfigData): ReactivityConfig;
|
|
254
|
+
|
|
255
|
+
/** Export minimal config (only non-default values) */
|
|
256
|
+
toMinimalJSON(): string;
|
|
257
|
+
|
|
258
|
+
/** Create a copy */
|
|
259
|
+
clone(): ReactivityConfig;
|
|
260
|
+
|
|
261
|
+
/** Reset to defaults */
|
|
262
|
+
reset(): this;
|
|
263
|
+
}
|
|
264
|
+
|
|
265
|
+
// ============================================================================
|
|
266
|
+
// ReactivityManager
|
|
267
|
+
// ============================================================================
|
|
268
|
+
|
|
269
|
+
/** Audio input state */
|
|
270
|
+
export interface AudioInputState {
|
|
271
|
+
bass: number;
|
|
272
|
+
mid: number;
|
|
273
|
+
high: number;
|
|
274
|
+
energy: number;
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/** Tilt input state */
|
|
278
|
+
export interface TiltInputState {
|
|
279
|
+
alpha: number;
|
|
280
|
+
beta: number;
|
|
281
|
+
gamma: number;
|
|
282
|
+
}
|
|
283
|
+
|
|
284
|
+
/** Mouse input state */
|
|
285
|
+
export interface MouseInputState {
|
|
286
|
+
x: number;
|
|
287
|
+
y: number;
|
|
288
|
+
velocityX: number;
|
|
289
|
+
velocityY: number;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/** Click input state */
|
|
293
|
+
export interface ClickInputState {
|
|
294
|
+
intensity: number;
|
|
295
|
+
lastTime: number;
|
|
296
|
+
}
|
|
297
|
+
|
|
298
|
+
/** Scroll input state */
|
|
299
|
+
export interface ScrollInputState {
|
|
300
|
+
delta: number;
|
|
301
|
+
accumulated: number;
|
|
302
|
+
}
|
|
303
|
+
|
|
304
|
+
/** Touch input state */
|
|
305
|
+
export interface TouchInputState {
|
|
306
|
+
touches: Touch[];
|
|
307
|
+
pinchScale: number;
|
|
308
|
+
rotation: number;
|
|
309
|
+
}
|
|
310
|
+
|
|
311
|
+
/** Complete input state */
|
|
312
|
+
export interface InputState {
|
|
313
|
+
audio: AudioInputState;
|
|
314
|
+
tilt: TiltInputState;
|
|
315
|
+
mouse: MouseInputState;
|
|
316
|
+
click: ClickInputState;
|
|
317
|
+
scroll: ScrollInputState;
|
|
318
|
+
touch: TouchInputState;
|
|
319
|
+
}
|
|
320
|
+
|
|
321
|
+
/** Parameter update callback function */
|
|
322
|
+
export type ParameterUpdateFn = (name: string, value: number) => void;
|
|
323
|
+
|
|
324
|
+
/** ReactivityManager event names */
|
|
325
|
+
export type ReactivityEvent = 'configChanged' | 'started' | 'stopped';
|
|
326
|
+
|
|
327
|
+
/**
|
|
328
|
+
* ReactivityManager - Coordinates all reactivity systems.
|
|
329
|
+
*
|
|
330
|
+
* Central hub that:
|
|
331
|
+
* 1. Receives input from audio, tilt, and interaction sources
|
|
332
|
+
* 2. Applies configured mappings from ReactivityConfig
|
|
333
|
+
* 3. Updates visualization parameters through the parameter system
|
|
334
|
+
*/
|
|
335
|
+
export declare class ReactivityManager {
|
|
336
|
+
/** Whether reactivity processing is active */
|
|
337
|
+
readonly isActive: boolean;
|
|
338
|
+
|
|
339
|
+
/** Current input state */
|
|
340
|
+
readonly inputState: InputState;
|
|
341
|
+
|
|
342
|
+
/** Base parameter values (before reactivity applied) */
|
|
343
|
+
readonly baseParameters: Record<string, number>;
|
|
344
|
+
|
|
345
|
+
constructor(parameterUpdateFn?: ParameterUpdateFn | null);
|
|
346
|
+
|
|
347
|
+
/** Set the parameter update function */
|
|
348
|
+
setParameterUpdateFunction(fn: ParameterUpdateFn): void;
|
|
349
|
+
|
|
350
|
+
/** Load a ReactivityConfig */
|
|
351
|
+
loadConfig(config: ReactivityConfig | Partial<ReactivityConfigData>): ValidationResult;
|
|
352
|
+
|
|
353
|
+
/** Get current config (deep copy) */
|
|
354
|
+
getConfig(): ReactivityConfigData;
|
|
355
|
+
|
|
356
|
+
/** Start the reactivity processing loop */
|
|
357
|
+
start(): void;
|
|
358
|
+
|
|
359
|
+
/** Stop the reactivity processing loop */
|
|
360
|
+
stop(): void;
|
|
361
|
+
|
|
362
|
+
/** Update audio input values */
|
|
363
|
+
setAudioInput(bass: number, mid: number, high: number, energy?: number | null): void;
|
|
364
|
+
|
|
365
|
+
/** Update tilt input values */
|
|
366
|
+
setTiltInput(alpha: number, beta: number, gamma: number): void;
|
|
367
|
+
|
|
368
|
+
/** Update mouse input values */
|
|
369
|
+
setMouseInput(x: number, y: number, velocityX?: number, velocityY?: number): void;
|
|
370
|
+
|
|
371
|
+
/** Trigger a click event */
|
|
372
|
+
triggerClick(intensity?: number): void;
|
|
373
|
+
|
|
374
|
+
/** Update scroll delta */
|
|
375
|
+
setScrollDelta(delta: number): void;
|
|
376
|
+
|
|
377
|
+
/** Update touch input */
|
|
378
|
+
setTouchInput(touches: Touch[], pinchScale?: number, rotation?: number): void;
|
|
379
|
+
|
|
380
|
+
/** Set base parameter value (before reactivity) */
|
|
381
|
+
setBaseParameter(param: string, value: number): void;
|
|
382
|
+
|
|
383
|
+
/** Set all base parameters */
|
|
384
|
+
setBaseParameters(params: Record<string, number>): void;
|
|
385
|
+
|
|
386
|
+
/** Add event listener */
|
|
387
|
+
on(event: ReactivityEvent, callback: (data?: any) => void): void;
|
|
388
|
+
|
|
389
|
+
/** Remove event listener */
|
|
390
|
+
off(event: ReactivityEvent, callback: (data?: any) => void): void;
|
|
391
|
+
|
|
392
|
+
/** Destroy and cleanup */
|
|
393
|
+
destroy(): void;
|
|
394
|
+
}
|