@konitif/viewer-3d 0.284.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/LICENSE.md +21 -0
- package/README.md +34 -0
- package/dist/balanceFootprintDefinition.d.ts +7 -0
- package/dist/balanceFootprintDefinition.d.ts.map +1 -0
- package/dist/balanceFootprintDefinition.js +2 -0
- package/dist/balanceFootprintDefinition.js.map +1 -0
- package/dist/diagnosticContactDefinition.d.ts +7 -0
- package/dist/diagnosticContactDefinition.d.ts.map +1 -0
- package/dist/diagnosticContactDefinition.js +2 -0
- package/dist/diagnosticContactDefinition.js.map +1 -0
- package/dist/handTipDefinition.d.ts +13 -0
- package/dist/handTipDefinition.d.ts.map +1 -0
- package/dist/handTipDefinition.js +2 -0
- package/dist/handTipDefinition.js.map +1 -0
- package/dist/index.d.ts +41 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +19 -0
- package/dist/index.js.map +1 -0
- package/dist/jointHandleDefinition.d.ts +23 -0
- package/dist/jointHandleDefinition.d.ts.map +1 -0
- package/dist/jointHandleDefinition.js +2 -0
- package/dist/jointHandleDefinition.js.map +1 -0
- package/dist/ledPlacementDefinition.d.ts +38 -0
- package/dist/ledPlacementDefinition.d.ts.map +1 -0
- package/dist/ledPlacementDefinition.js +2 -0
- package/dist/ledPlacementDefinition.js.map +1 -0
- package/dist/ledReferenceFrame.d.ts +26 -0
- package/dist/ledReferenceFrame.d.ts.map +1 -0
- package/dist/ledReferenceFrame.js +2 -0
- package/dist/ledReferenceFrame.js.map +1 -0
- package/dist/ledRingCalibration.d.ts +22 -0
- package/dist/ledRingCalibration.d.ts.map +1 -0
- package/dist/ledRingCalibration.js +2 -0
- package/dist/ledRingCalibration.js.map +1 -0
- package/dist/renderer/AnimationLoop.d.ts +18 -0
- package/dist/renderer/AnimationLoop.d.ts.map +1 -0
- package/dist/renderer/AnimationLoop.js +39 -0
- package/dist/renderer/AnimationLoop.js.map +1 -0
- package/dist/renderer/CameraController.d.ts +154 -0
- package/dist/renderer/CameraController.d.ts.map +1 -0
- package/dist/renderer/CameraController.js +469 -0
- package/dist/renderer/CameraController.js.map +1 -0
- package/dist/renderer/NavigationPhysicsObservation.d.ts +25 -0
- package/dist/renderer/NavigationPhysicsObservation.d.ts.map +1 -0
- package/dist/renderer/NavigationPhysicsObservation.js +81 -0
- package/dist/renderer/NavigationPhysicsObservation.js.map +1 -0
- package/dist/renderer/ObservedRobotGroundingProjection.d.ts +206 -0
- package/dist/renderer/ObservedRobotGroundingProjection.d.ts.map +1 -0
- package/dist/renderer/ObservedRobotGroundingProjection.js +522 -0
- package/dist/renderer/ObservedRobotGroundingProjection.js.map +1 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts +71 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.d.ts.map +1 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.js +226 -0
- package/dist/renderer/ObservedRobotPresentationBuffer.js.map +1 -0
- package/dist/renderer/PerformanceMonitor.d.ts +38 -0
- package/dist/renderer/PerformanceMonitor.d.ts.map +1 -0
- package/dist/renderer/PerformanceMonitor.js +84 -0
- package/dist/renderer/PerformanceMonitor.js.map +1 -0
- package/dist/renderer/ProjectileInteraction.d.ts +57 -0
- package/dist/renderer/ProjectileInteraction.d.ts.map +1 -0
- package/dist/renderer/ProjectileInteraction.js +152 -0
- package/dist/renderer/ProjectileInteraction.js.map +1 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.d.ts +12 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.d.ts.map +1 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.js +23 -0
- package/dist/renderer/RobotComparisonVisibilityTransition.js.map +1 -0
- package/dist/renderer/RobotPoseTransition.d.ts +34 -0
- package/dist/renderer/RobotPoseTransition.d.ts.map +1 -0
- package/dist/renderer/RobotPoseTransition.js +66 -0
- package/dist/renderer/RobotPoseTransition.js.map +1 -0
- package/dist/renderer/RobotPostureCompensation.d.ts +31 -0
- package/dist/renderer/RobotPostureCompensation.d.ts.map +1 -0
- package/dist/renderer/RobotPostureCompensation.js +60 -0
- package/dist/renderer/RobotPostureCompensation.js.map +1 -0
- package/dist/renderer/SelectionController.d.ts +24 -0
- package/dist/renderer/SelectionController.d.ts.map +1 -0
- package/dist/renderer/SelectionController.js +68 -0
- package/dist/renderer/SelectionController.js.map +1 -0
- package/dist/renderer/TemporalProjectionModel.d.ts +71 -0
- package/dist/renderer/TemporalProjectionModel.d.ts.map +1 -0
- package/dist/renderer/TemporalProjectionModel.js +363 -0
- package/dist/renderer/TemporalProjectionModel.js.map +1 -0
- package/dist/renderer/Viewer3DRenderer.d.ts +1137 -0
- package/dist/renderer/Viewer3DRenderer.d.ts.map +1 -0
- package/dist/renderer/Viewer3DRenderer.js +10655 -0
- package/dist/renderer/Viewer3DRenderer.js.map +1 -0
- package/dist/renderer/ViewerExperimentCollector.d.ts +27 -0
- package/dist/renderer/ViewerExperimentCollector.d.ts.map +1 -0
- package/dist/renderer/ViewerExperimentCollector.js +2 -0
- package/dist/renderer/ViewerExperimentCollector.js.map +1 -0
- package/dist/renderer/ViewerExperimentPort.d.ts +19 -0
- package/dist/renderer/ViewerExperimentPort.d.ts.map +1 -0
- package/dist/renderer/ViewerExperimentPort.js +2 -0
- package/dist/renderer/ViewerExperimentPort.js.map +1 -0
- package/dist/renderer/ViewerFrameSignals.d.ts +13 -0
- package/dist/renderer/ViewerFrameSignals.d.ts.map +1 -0
- package/dist/renderer/ViewerFrameSignals.js +73 -0
- package/dist/renderer/ViewerFrameSignals.js.map +1 -0
- package/dist/renderer/ViewerHistoryData.d.ts +59 -0
- package/dist/renderer/ViewerHistoryData.d.ts.map +1 -0
- package/dist/renderer/ViewerHistoryData.js +2 -0
- package/dist/renderer/ViewerHistoryData.js.map +1 -0
- package/dist/renderer/ViewerHistoryPort.d.ts +15 -0
- package/dist/renderer/ViewerHistoryPort.d.ts.map +1 -0
- package/dist/renderer/ViewerHistoryPort.js +2 -0
- package/dist/renderer/ViewerHistoryPort.js.map +1 -0
- package/dist/renderer/ViewerIncarnationHealth.d.ts +14 -0
- package/dist/renderer/ViewerIncarnationHealth.d.ts.map +1 -0
- package/dist/renderer/ViewerIncarnationHealth.js +13 -0
- package/dist/renderer/ViewerIncarnationHealth.js.map +1 -0
- package/dist/renderer/ViewerInputBindings.d.ts +19 -0
- package/dist/renderer/ViewerInputBindings.d.ts.map +1 -0
- package/dist/renderer/ViewerInputBindings.js +44 -0
- package/dist/renderer/ViewerInputBindings.js.map +1 -0
- package/dist/renderer/ViewerMetadata.d.ts +11 -0
- package/dist/renderer/ViewerMetadata.d.ts.map +1 -0
- package/dist/renderer/ViewerMetadata.js +8 -0
- package/dist/renderer/ViewerMetadata.js.map +1 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.d.ts +29 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.d.ts.map +1 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.js +27 -0
- package/dist/renderer/ViewerPlaybackCompletionPolicy.js.map +1 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.d.ts +21 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.d.ts.map +1 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.js +134 -0
- package/dist/renderer/ViewerProjectileParticleRenderer.js.map +1 -0
- package/dist/renderer/ViewerResizePresentation.d.ts +16 -0
- package/dist/renderer/ViewerResizePresentation.d.ts.map +1 -0
- package/dist/renderer/ViewerResizePresentation.js +12 -0
- package/dist/renderer/ViewerResizePresentation.js.map +1 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.d.ts +34 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.d.ts.map +1 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.js +130 -0
- package/dist/renderer/ViewerTemporalProjectionExperimentAdapter.js.map +1 -0
- package/dist/renderer/ViewerTemporalScheduler.d.ts +6 -0
- package/dist/renderer/ViewerTemporalScheduler.d.ts.map +1 -0
- package/dist/renderer/ViewerTemporalScheduler.js +12 -0
- package/dist/renderer/ViewerTemporalScheduler.js.map +1 -0
- package/dist/renderer/VisualGroundLayer.d.ts +110 -0
- package/dist/renderer/VisualGroundLayer.d.ts.map +1 -0
- package/dist/renderer/VisualGroundLayer.js +576 -0
- package/dist/renderer/VisualGroundLayer.js.map +1 -0
- package/dist/renderer/displayFrameRate.d.ts +5 -0
- package/dist/renderer/displayFrameRate.d.ts.map +1 -0
- package/dist/renderer/displayFrameRate.js +23 -0
- package/dist/renderer/displayFrameRate.js.map +1 -0
- package/dist/renderer/index.d.ts +20 -0
- package/dist/renderer/index.d.ts.map +1 -0
- package/dist/renderer/index.js +18 -0
- package/dist/renderer/index.js.map +1 -0
- package/dist/renderer/physics/ViewerJointResolution.d.ts +19 -0
- package/dist/renderer/physics/ViewerJointResolution.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerJointResolution.js +24 -0
- package/dist/renderer/physics/ViewerJointResolution.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.d.ts +9 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.js +26 -0
- package/dist/renderer/physics/ViewerPhysicsFrame.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.d.ts +11 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.js +20 -0
- package/dist/renderer/physics/ViewerPhysicsJointMapping.js.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.d.ts +20 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.d.ts.map +1 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.js +49 -0
- package/dist/renderer/physics/ViewerPhysicsMetadata.js.map +1 -0
- package/dist/renderer/robotViewerMotion.d.ts +49 -0
- package/dist/renderer/robotViewerMotion.d.ts.map +1 -0
- package/dist/renderer/robotViewerMotion.js +253 -0
- package/dist/renderer/robotViewerMotion.js.map +1 -0
- package/dist/supportDefinition.d.ts +11 -0
- package/dist/supportDefinition.d.ts.map +1 -0
- package/dist/supportDefinition.js +2 -0
- package/dist/supportDefinition.js.map +1 -0
- package/package.json +52 -0
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { ViewerMetadata } from './ViewerMetadata.js';
|
|
2
|
+
/** Collector supplied for one viewer protocol adapter. The provider owns
|
|
3
|
+
* admission, retained observations, summaries and output formats.
|
|
4
|
+
* Timestamps are milliseconds; no clock or scheduling is owned by this port.
|
|
5
|
+
*/
|
|
6
|
+
export interface ViewerExperimentCollector<Artifact, Snapshot> {
|
|
7
|
+
start(input: {
|
|
8
|
+
runId: string;
|
|
9
|
+
conditionId: string;
|
|
10
|
+
startedAtMs: number;
|
|
11
|
+
environment: ViewerMetadata;
|
|
12
|
+
}): void;
|
|
13
|
+
markPhase(phaseId: string, observedAtMs: number, provenance?: ViewerMetadata): boolean;
|
|
14
|
+
record(input: {
|
|
15
|
+
observedAtMs: number;
|
|
16
|
+
metrics: Readonly<Record<string, number | null | undefined>>;
|
|
17
|
+
provenance?: ViewerMetadata;
|
|
18
|
+
}): boolean;
|
|
19
|
+
stop(input: {
|
|
20
|
+
endedAtMs: number;
|
|
21
|
+
status?: 'completed' | 'invalid';
|
|
22
|
+
reason?: string | null;
|
|
23
|
+
}): Artifact;
|
|
24
|
+
isRecording(): boolean;
|
|
25
|
+
snapshot(): Snapshot;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ViewerExperimentCollector.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerExperimentCollector.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerExperimentCollector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,MAAM,WAAW,yBAAyB,CAAC,QAAQ,EAAE,QAAQ;IAC3D,KAAK,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,cAAc,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7G,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IACvF,MAAM,CAAC,KAAK,EAAE;QACZ,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;QAC7D,UAAU,CAAC,EAAE,cAAc,CAAC;KAC7B,GAAG,OAAO,CAAC;IACZ,IAAI,CAAC,KAAK,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,WAAW,GAAG,SAAS,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,QAAQ,CAAC;IACvG,WAAW,IAAI,OAAO,CAAC;IACvB,QAAQ,IAAI,QAAQ,CAAC;CACtB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerExperimentCollector.js","sourceRoot":"","sources":["../../src/renderer/ViewerExperimentCollector.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ViewerMetadata } from './ViewerMetadata.js';
|
|
2
|
+
/** Caller-provided context; the viewer supplies its current mode and configuration. */
|
|
3
|
+
export interface ViewerExperimentStart {
|
|
4
|
+
runId: string;
|
|
5
|
+
startedAtMs: number;
|
|
6
|
+
environment: ViewerMetadata;
|
|
7
|
+
}
|
|
8
|
+
/** Public experiment control, distinct from the collector's measurement sink.
|
|
9
|
+
* Artifact and Snapshot belong to the supplied experiment provider. This port
|
|
10
|
+
* neither interprets their schema nor owns collection, admission or persistence.
|
|
11
|
+
* Timestamps are milliseconds; provider errors and output references propagate.
|
|
12
|
+
*/
|
|
13
|
+
export interface ViewerExperimentPort<Artifact, Snapshot> {
|
|
14
|
+
startTemporalProjectionExperiment(input: ViewerExperimentStart): Snapshot;
|
|
15
|
+
markTemporalProjectionExperimentPhase(phaseId: string, observedAtMs: number, provenance?: ViewerMetadata): boolean;
|
|
16
|
+
stopTemporalProjectionExperiment(endedAtMs: number): Artifact;
|
|
17
|
+
getTemporalProjectionExperimentSnapshot(): Snapshot;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=ViewerExperimentPort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerExperimentPort.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerExperimentPort.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,uFAAuF;AACvF,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,cAAc,CAAC;CAC7B;AAED;;;;GAIG;AACH,MAAM,WAAW,oBAAoB,CAAC,QAAQ,EAAE,QAAQ;IACtD,iCAAiC,CAAC,KAAK,EAAE,qBAAqB,GAAG,QAAQ,CAAC;IAC1E,qCAAqC,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC;IACnH,gCAAgC,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAAC;IAC9D,uCAAuC,IAAI,QAAQ,CAAC;CACrD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerExperimentPort.js","sourceRoot":"","sources":["../../src/renderer/ViewerExperimentPort.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export type ViewerFrameSignalId = 'animation-pose' | 'physics-step' | 'physics-observation' | 'temporal-projection' | 'controls' | 'render' | 'runtime-history' | 'diagnostics';
|
|
2
|
+
export type ViewerFrameSignalCadence = 'raf' | 'fixed' | 'event';
|
|
3
|
+
export interface ViewerFrameSignalDefinition {
|
|
4
|
+
id: ViewerFrameSignalId;
|
|
5
|
+
profilerLabel: string;
|
|
6
|
+
authority: 'session' | 'physics-worker' | 'viewer' | 'user';
|
|
7
|
+
cadence: ViewerFrameSignalCadence;
|
|
8
|
+
targetRateHz: number | null;
|
|
9
|
+
invalidates: readonly ViewerFrameSignalId[];
|
|
10
|
+
}
|
|
11
|
+
export declare const VIEWER_FRAME_SIGNAL_CATALOG: Readonly<Record<ViewerFrameSignalId, ViewerFrameSignalDefinition>>;
|
|
12
|
+
export declare function resolveViewerFrameSignalIntervalMs(signalId: ViewerFrameSignalId, targetRateHz?: number | null): number;
|
|
13
|
+
//# sourceMappingURL=ViewerFrameSignals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerFrameSignals.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerFrameSignals.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAC3B,gBAAgB,GAChB,cAAc,GACd,qBAAqB,GACrB,qBAAqB,GACrB,UAAU,GACV,QAAQ,GACR,iBAAiB,GACjB,aAAa,CAAC;AAElB,MAAM,MAAM,wBAAwB,GAAG,KAAK,GAAG,OAAO,GAAG,OAAO,CAAC;AAEjE,MAAM,WAAW,2BAA2B;IAC1C,EAAE,EAAE,mBAAmB,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,SAAS,GAAG,gBAAgB,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC5D,OAAO,EAAE,wBAAwB,CAAC;IAClC,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,WAAW,EAAE,SAAS,mBAAmB,EAAE,CAAC;CAC7C;AAED,eAAO,MAAM,2BAA2B,EAAE,QAAQ,CAAC,MAAM,CAAC,mBAAmB,EAAE,2BAA2B,CAAC,CAiE1G,CAAC;AAEF,wBAAgB,kCAAkC,CAChD,QAAQ,EAAE,mBAAmB,EAC7B,YAAY,gBAAqD,GAChE,MAAM,CAMR"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
export const VIEWER_FRAME_SIGNAL_CATALOG = {
|
|
2
|
+
'animation-pose': {
|
|
3
|
+
id: 'animation-pose',
|
|
4
|
+
profilerLabel: 'POSE',
|
|
5
|
+
authority: 'session',
|
|
6
|
+
cadence: 'raf',
|
|
7
|
+
targetRateHz: null,
|
|
8
|
+
invalidates: ['render']
|
|
9
|
+
},
|
|
10
|
+
'physics-step': {
|
|
11
|
+
id: 'physics-step',
|
|
12
|
+
profilerLabel: 'PHY',
|
|
13
|
+
authority: 'physics-worker',
|
|
14
|
+
cadence: 'fixed',
|
|
15
|
+
targetRateHz: 30,
|
|
16
|
+
invalidates: ['physics-observation']
|
|
17
|
+
},
|
|
18
|
+
'physics-observation': {
|
|
19
|
+
id: 'physics-observation',
|
|
20
|
+
profilerLabel: 'OBS',
|
|
21
|
+
authority: 'physics-worker',
|
|
22
|
+
cadence: 'event',
|
|
23
|
+
targetRateHz: null,
|
|
24
|
+
invalidates: ['temporal-projection', 'runtime-history', 'diagnostics']
|
|
25
|
+
},
|
|
26
|
+
'temporal-projection': {
|
|
27
|
+
id: 'temporal-projection',
|
|
28
|
+
profilerLabel: 'PRJ',
|
|
29
|
+
authority: 'viewer',
|
|
30
|
+
cadence: 'raf',
|
|
31
|
+
targetRateHz: null,
|
|
32
|
+
invalidates: ['render']
|
|
33
|
+
},
|
|
34
|
+
controls: {
|
|
35
|
+
id: 'controls',
|
|
36
|
+
profilerLabel: 'CTRL',
|
|
37
|
+
authority: 'user',
|
|
38
|
+
cadence: 'event',
|
|
39
|
+
targetRateHz: null,
|
|
40
|
+
invalidates: ['render']
|
|
41
|
+
},
|
|
42
|
+
render: {
|
|
43
|
+
id: 'render',
|
|
44
|
+
profilerLabel: 'RND',
|
|
45
|
+
authority: 'viewer',
|
|
46
|
+
cadence: 'raf',
|
|
47
|
+
targetRateHz: null,
|
|
48
|
+
invalidates: []
|
|
49
|
+
},
|
|
50
|
+
'runtime-history': {
|
|
51
|
+
id: 'runtime-history',
|
|
52
|
+
profilerLabel: 'HIST',
|
|
53
|
+
authority: 'viewer',
|
|
54
|
+
cadence: 'fixed',
|
|
55
|
+
targetRateHz: 30,
|
|
56
|
+
invalidates: []
|
|
57
|
+
},
|
|
58
|
+
diagnostics: {
|
|
59
|
+
id: 'diagnostics',
|
|
60
|
+
profilerLabel: 'DIAG',
|
|
61
|
+
authority: 'viewer',
|
|
62
|
+
cadence: 'fixed',
|
|
63
|
+
targetRateHz: 2,
|
|
64
|
+
invalidates: []
|
|
65
|
+
}
|
|
66
|
+
};
|
|
67
|
+
export function resolveViewerFrameSignalIntervalMs(signalId, targetRateHz = VIEWER_FRAME_SIGNAL_CATALOG[signalId].targetRateHz) {
|
|
68
|
+
if (targetRateHz === null || !Number.isFinite(targetRateHz) || targetRateHz <= 0) {
|
|
69
|
+
return 0;
|
|
70
|
+
}
|
|
71
|
+
return 1000 / Math.max(1, Math.min(240, targetRateHz));
|
|
72
|
+
}
|
|
73
|
+
//# sourceMappingURL=ViewerFrameSignals.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerFrameSignals.js","sourceRoot":"","sources":["../../src/renderer/ViewerFrameSignals.ts"],"names":[],"mappings":"AAqBA,MAAM,CAAC,MAAM,2BAA2B,GAAuE;IAC7G,gBAAgB,EAAE;QAChB,EAAE,EAAE,gBAAgB;QACpB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,SAAS;QACpB,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB;IACD,cAAc,EAAE;QACd,EAAE,EAAE,cAAc;QAClB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,CAAC,qBAAqB,CAAC;KACrC;IACD,qBAAqB,EAAE;QACrB,EAAE,EAAE,qBAAqB;QACzB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,gBAAgB;QAC3B,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,CAAC;KACvE;IACD,qBAAqB,EAAE;QACrB,EAAE,EAAE,qBAAqB;QACzB,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB;IACD,QAAQ,EAAE;QACR,EAAE,EAAE,UAAU;QACd,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,MAAM;QACjB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,CAAC,QAAQ,CAAC;KACxB;IACD,MAAM,EAAE;QACN,EAAE,EAAE,QAAQ;QACZ,aAAa,EAAE,KAAK;QACpB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,IAAI;QAClB,WAAW,EAAE,EAAE;KAChB;IACD,iBAAiB,EAAE;QACjB,EAAE,EAAE,iBAAiB;QACrB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;KAChB;IACD,WAAW,EAAE;QACX,EAAE,EAAE,aAAa;QACjB,aAAa,EAAE,MAAM;QACrB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,OAAO;QAChB,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,EAAE;KAChB;CACF,CAAC;AAEF,MAAM,UAAU,kCAAkC,CAChD,QAA6B,EAC7B,YAAY,GAAG,2BAA2B,CAAC,QAAQ,CAAC,CAAC,YAAY;IAEjE,IAAI,YAAY,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,IAAI,CAAC,EAAE,CAAC;QACjF,OAAO,CAAC,CAAC;IACX,CAAC;IAED,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC;AACzD,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/** Scene data exchanged by the viewer, not the application's history authority.
|
|
2
|
+
* Metadata encoding is supplied by the consumer; these contracts perform no validation.
|
|
3
|
+
*/
|
|
4
|
+
export interface ViewerHistoryVector3 {
|
|
5
|
+
x: number;
|
|
6
|
+
y: number;
|
|
7
|
+
z: number;
|
|
8
|
+
}
|
|
9
|
+
export interface ViewerHistoryQuaternion extends ViewerHistoryVector3 {
|
|
10
|
+
w: number;
|
|
11
|
+
}
|
|
12
|
+
export interface ViewerHistoryTransform<Metadata> {
|
|
13
|
+
id: string;
|
|
14
|
+
position: ViewerHistoryVector3;
|
|
15
|
+
rotation?: ViewerHistoryQuaternion;
|
|
16
|
+
scale?: ViewerHistoryVector3;
|
|
17
|
+
sourceId?: string;
|
|
18
|
+
metadata?: Metadata;
|
|
19
|
+
}
|
|
20
|
+
export interface ViewerHistoryCameraSample {
|
|
21
|
+
position: ViewerHistoryVector3;
|
|
22
|
+
target: ViewerHistoryVector3;
|
|
23
|
+
projection: string;
|
|
24
|
+
}
|
|
25
|
+
export interface ViewerHistoryPhysicsSample<Metadata> {
|
|
26
|
+
engine: string;
|
|
27
|
+
enabled: boolean;
|
|
28
|
+
motorsCoupled?: boolean;
|
|
29
|
+
bodyCount: number;
|
|
30
|
+
jointCount: number;
|
|
31
|
+
centerOfMass?: ViewerHistoryVector3 | null;
|
|
32
|
+
bodyTransforms?: ViewerHistoryTransform<Metadata>[];
|
|
33
|
+
jointStates?: Record<string, number>;
|
|
34
|
+
}
|
|
35
|
+
export interface ViewerHistoryPlaybackSample {
|
|
36
|
+
sourceId?: string;
|
|
37
|
+
/** Playback cursor in seconds. */
|
|
38
|
+
currentTime: number;
|
|
39
|
+
isPlaying: boolean;
|
|
40
|
+
playbackRate?: number;
|
|
41
|
+
duration?: number;
|
|
42
|
+
}
|
|
43
|
+
export interface ViewerHistorySceneSample<Metadata> {
|
|
44
|
+
camera?: ViewerHistoryCameraSample;
|
|
45
|
+
joints?: Record<string, number>;
|
|
46
|
+
physics?: ViewerHistoryPhysicsSample<Metadata>;
|
|
47
|
+
playback?: ViewerHistoryPlaybackSample;
|
|
48
|
+
metadata?: Metadata;
|
|
49
|
+
}
|
|
50
|
+
export interface ViewerHistorySample<Metadata> {
|
|
51
|
+
/** Entry identifier assigned by the history owner, not a scene entity identifier. */
|
|
52
|
+
id: number;
|
|
53
|
+
timeSeconds: number;
|
|
54
|
+
/** Recording timestamp in milliseconds, supplied by the history owner. */
|
|
55
|
+
recordedAt: number;
|
|
56
|
+
viewer?: ViewerHistorySceneSample<Metadata>;
|
|
57
|
+
metadata?: Metadata;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ViewerHistoryData.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerHistoryData.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerHistoryData.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;IACV,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB;IACnE,CAAC,EAAE,MAAM,CAAC;CACX;AAED,MAAM,WAAW,sBAAsB,CAAC,QAAQ;IAC9C,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,QAAQ,CAAC,EAAE,uBAAuB,CAAC;IACnC,KAAK,CAAC,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,yBAAyB;IACxC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,MAAM,EAAE,oBAAoB,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,0BAA0B,CAAC,QAAQ;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC3C,cAAc,CAAC,EAAE,sBAAsB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,2BAA2B;IAC1C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,kCAAkC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,wBAAwB,CAAC,QAAQ;IAChD,MAAM,CAAC,EAAE,yBAAyB,CAAC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,OAAO,CAAC,EAAE,0BAA0B,CAAC,QAAQ,CAAC,CAAC;IAC/C,QAAQ,CAAC,EAAE,2BAA2B,CAAC;IACvC,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ;IAC3C,qFAAqF;IACrF,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,CAAC,EAAE,wBAAwB,CAAC,QAAQ,CAAC,CAAC;IAC5C,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerHistoryData.js","sourceRoot":"","sources":["../../src/renderer/ViewerHistoryData.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/** Borrowed history access. The owner retains replay controls, retention and disposal. */
|
|
2
|
+
export interface ViewerHistoryPort<SampleInput, Snapshot> {
|
|
3
|
+
isRecording(): boolean;
|
|
4
|
+
recordSample(sample: SampleInput): void;
|
|
5
|
+
snapshot(): Snapshot;
|
|
6
|
+
subscribe(listener: (snapshot: Snapshot) => void): () => void;
|
|
7
|
+
}
|
|
8
|
+
/** Read-side requirements only; the history owner selects the sample and replay cursor. */
|
|
9
|
+
export interface ViewerHistoryObservation<Sample> {
|
|
10
|
+
readonly replayState: 'live' | 'paused' | 'playing';
|
|
11
|
+
/** Seconds, or null when the selected sample supplies the cursor. */
|
|
12
|
+
readonly replayTimeSeconds: number | null;
|
|
13
|
+
readonly selectedSample: Sample | null;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=ViewerHistoryPort.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerHistoryPort.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerHistoryPort.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAC1F,MAAM,WAAW,iBAAiB,CAAC,WAAW,EAAE,QAAQ;IACtD,WAAW,IAAI,OAAO,CAAC;IACvB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,IAAI,CAAC;IACxC,QAAQ,IAAI,QAAQ,CAAC;IACrB,SAAS,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,KAAK,IAAI,GAAG,MAAM,IAAI,CAAC;CAC/D;AAED,2FAA2F;AAC3F,MAAM,WAAW,wBAAwB,CAAC,MAAM;IAC9C,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS,CAAC;IACpD,qEAAqE;IACrE,QAAQ,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerHistoryPort.js","sourceRoot":"","sources":["../../src/renderer/ViewerHistoryPort.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export type ViewerIncarnationLossReason = 'destroyed' | 'canvas-detached' | 'context-lost';
|
|
2
|
+
export type ViewerIncarnationHealth = {
|
|
3
|
+
operational: true;
|
|
4
|
+
reason: null;
|
|
5
|
+
} | {
|
|
6
|
+
operational: false;
|
|
7
|
+
reason: ViewerIncarnationLossReason;
|
|
8
|
+
};
|
|
9
|
+
export declare function resolveViewerIncarnationHealth(input: {
|
|
10
|
+
destroyed: boolean;
|
|
11
|
+
canvasAttached: boolean;
|
|
12
|
+
contextLost: boolean;
|
|
13
|
+
}): ViewerIncarnationHealth;
|
|
14
|
+
//# sourceMappingURL=ViewerIncarnationHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerIncarnationHealth.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerIncarnationHealth.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,2BAA2B,GAAG,WAAW,GAAG,iBAAiB,GAAG,cAAc,CAAC;AAE3F,MAAM,MAAM,uBAAuB,GAC/B;IAAE,WAAW,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,IAAI,CAAA;CAAE,GACnC;IAAE,WAAW,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,2BAA2B,CAAA;CAAE,CAAC;AAEhE,wBAAgB,8BAA8B,CAAC,KAAK,EAAE;IACpD,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,WAAW,EAAE,OAAO,CAAC;CACtB,GAAG,uBAAuB,CAc1B"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export function resolveViewerIncarnationHealth(input) {
|
|
2
|
+
if (input.destroyed) {
|
|
3
|
+
return { operational: false, reason: 'destroyed' };
|
|
4
|
+
}
|
|
5
|
+
if (!input.canvasAttached) {
|
|
6
|
+
return { operational: false, reason: 'canvas-detached' };
|
|
7
|
+
}
|
|
8
|
+
if (input.contextLost) {
|
|
9
|
+
return { operational: false, reason: 'context-lost' };
|
|
10
|
+
}
|
|
11
|
+
return { operational: true, reason: null };
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=ViewerIncarnationHealth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerIncarnationHealth.js","sourceRoot":"","sources":["../../src/renderer/ViewerIncarnationHealth.ts"],"names":[],"mappings":"AAMA,MAAM,UAAU,8BAA8B,CAAC,KAI9C;IACC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QACpB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;QAC1B,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { InteractionInputBinding, InteractionInputSignal } from '@konitif/tools/input';
|
|
2
|
+
export declare const VIEWER_PROJECTILE_CHARGE_ACTION_ID = "viewer.projectile.charge";
|
|
3
|
+
export declare const VIEWER_PROJECTILE_LAUNCH_ACTION_ID = "viewer.projectile.launch";
|
|
4
|
+
/**
|
|
5
|
+
* Product-level associations. Viewer3D consumes the action id, never a specific key.
|
|
6
|
+
* A caller may replace this catalog or apply session/workspace overrides.
|
|
7
|
+
*/
|
|
8
|
+
export declare const DEFAULT_VIEWER_INPUT_BINDINGS: readonly InteractionInputBinding[];
|
|
9
|
+
/** Observed key fields only; event lifecycle and default prevention remain with the host. */
|
|
10
|
+
export interface ViewerKeyboardInput {
|
|
11
|
+
readonly code: string;
|
|
12
|
+
readonly ctrlKey: boolean;
|
|
13
|
+
readonly altKey: boolean;
|
|
14
|
+
readonly shiftKey: boolean;
|
|
15
|
+
readonly metaKey: boolean;
|
|
16
|
+
readonly repeat: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function createInteractionKeyboardSignal(event: ViewerKeyboardInput, phase: InteractionInputSignal['phase']): InteractionInputSignal;
|
|
19
|
+
//# sourceMappingURL=ViewerInputBindings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerInputBindings.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerInputBindings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,uBAAuB,EAEvB,sBAAsB,EACvB,MAAM,sBAAsB,CAAC;AAE9B,eAAO,MAAM,kCAAkC,6BAA6B,CAAC;AAC7E,eAAO,MAAM,kCAAkC,6BAA6B,CAAC;AAE7E;;;GAGG;AACH,eAAO,MAAM,6BAA6B,EAAE,SAAS,uBAAuB,EAkB3E,CAAC;AAEF,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC;IAC3B,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;CAC1B;AAED,wBAAgB,+BAA+B,CAC7C,KAAK,EAAE,mBAAmB,EAC1B,KAAK,EAAE,sBAAsB,CAAC,OAAO,CAAC,GACrC,sBAAsB,CAaxB"}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
export const VIEWER_PROJECTILE_CHARGE_ACTION_ID = 'viewer.projectile.charge';
|
|
2
|
+
export const VIEWER_PROJECTILE_LAUNCH_ACTION_ID = 'viewer.projectile.launch';
|
|
3
|
+
/**
|
|
4
|
+
* Product-level associations. Viewer3D consumes the action id, never a specific key.
|
|
5
|
+
* A caller may replace this catalog or apply session/workspace overrides.
|
|
6
|
+
*/
|
|
7
|
+
export const DEFAULT_VIEWER_INPUT_BINDINGS = [
|
|
8
|
+
{
|
|
9
|
+
id: 'viewer.projectile.launch.keyboard.primary',
|
|
10
|
+
actionId: VIEWER_PROJECTILE_CHARGE_ACTION_ID,
|
|
11
|
+
source: 'keyboard',
|
|
12
|
+
controlId: 'Space',
|
|
13
|
+
phase: 'press',
|
|
14
|
+
allowRepeat: true,
|
|
15
|
+
enabled: true
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
id: 'viewer.projectile.launch.keyboard.primary.release',
|
|
19
|
+
actionId: VIEWER_PROJECTILE_LAUNCH_ACTION_ID,
|
|
20
|
+
source: 'keyboard',
|
|
21
|
+
controlId: 'Space',
|
|
22
|
+
phase: 'release',
|
|
23
|
+
enabled: true
|
|
24
|
+
}
|
|
25
|
+
];
|
|
26
|
+
export function createInteractionKeyboardSignal(event, phase) {
|
|
27
|
+
const modifiers = [];
|
|
28
|
+
if (event.ctrlKey)
|
|
29
|
+
modifiers.push('control');
|
|
30
|
+
if (event.altKey)
|
|
31
|
+
modifiers.push('alt');
|
|
32
|
+
if (event.shiftKey)
|
|
33
|
+
modifiers.push('shift');
|
|
34
|
+
if (event.metaKey)
|
|
35
|
+
modifiers.push('meta');
|
|
36
|
+
return {
|
|
37
|
+
source: 'keyboard',
|
|
38
|
+
controlId: event.code,
|
|
39
|
+
phase,
|
|
40
|
+
modifiers,
|
|
41
|
+
repeat: event.repeat
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=ViewerInputBindings.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerInputBindings.js","sourceRoot":"","sources":["../../src/renderer/ViewerInputBindings.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAC7E,MAAM,CAAC,MAAM,kCAAkC,GAAG,0BAA0B,CAAC;AAE7E;;;GAGG;AACH,MAAM,CAAC,MAAM,6BAA6B,GAAuC;IAC/E;QACE,EAAE,EAAE,2CAA2C;QAC/C,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,OAAO;QAClB,KAAK,EAAE,OAAO;QACd,WAAW,EAAE,IAAI;QACjB,OAAO,EAAE,IAAI;KACd;IACD;QACE,EAAE,EAAE,mDAAmD;QACvD,QAAQ,EAAE,kCAAkC;QAC5C,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,OAAO;QAClB,KAAK,EAAE,SAAS;QAChB,OAAO,EAAE,IAAI;KACd;CACF,CAAC;AAYF,MAAM,UAAU,+BAA+B,CAC7C,KAA0B,EAC1B,KAAsC;IAEtC,MAAM,SAAS,GAA+B,EAAE,CAAC;IACjD,IAAI,KAAK,CAAC,OAAO;QAAE,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM;QAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACxC,IAAI,KAAK,CAAC,QAAQ;QAAE,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC5C,IAAI,KAAK,CAAC,OAAO;QAAE,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,OAAO;QACL,MAAM,EAAE,UAAU;QAClB,SAAS,EAAE,KAAK,CAAC,IAAI;QACrB,KAAK;QACL,SAAS;QACT,MAAM,EAAE,KAAK,CAAC,MAAM;KACrB,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/** JSON encoding accepted for viewer annotations and provenance, not an admission policy. */
|
|
2
|
+
export type ViewerMetadataValue = string | number | boolean | null | ViewerMetadata | ViewerMetadataValue[];
|
|
3
|
+
export type ViewerMetadata = {
|
|
4
|
+
[key: string]: ViewerMetadataValue;
|
|
5
|
+
};
|
|
6
|
+
/** Preserve the existing JSON round-trip when copying transform annotations.
|
|
7
|
+
* This is not a validator or structured clone: native JSON normalization,
|
|
8
|
+
* toJSON hooks and serialization failures are deliberately unchanged.
|
|
9
|
+
*/
|
|
10
|
+
export declare function copyViewerMetadata<T extends ViewerMetadata>(metadata: T): T;
|
|
11
|
+
//# sourceMappingURL=ViewerMetadata.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerMetadata.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerMetadata.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,GAAG,mBAAmB,EAAE,CAAC;AAC5G,MAAM,MAAM,cAAc,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,mBAAmB,CAAA;CAAE,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,cAAc,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAE3E"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** Preserve the existing JSON round-trip when copying transform annotations.
|
|
2
|
+
* This is not a validator or structured clone: native JSON normalization,
|
|
3
|
+
* toJSON hooks and serialization failures are deliberately unchanged.
|
|
4
|
+
*/
|
|
5
|
+
export function copyViewerMetadata(metadata) {
|
|
6
|
+
return JSON.parse(JSON.stringify(metadata));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=ViewerMetadata.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerMetadata.js","sourceRoot":"","sources":["../../src/renderer/ViewerMetadata.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAA2B,QAAW;IACtE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAM,CAAC;AACnD,CAAC"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export type ViewerPlaybackCompletionBehavior = 'hold' | 'return-to-default';
|
|
2
|
+
export interface ViewerPlaybackCompletionTransitionInput {
|
|
3
|
+
isPlaying: boolean;
|
|
4
|
+
completionReached: boolean;
|
|
5
|
+
completionBehavior: ViewerPlaybackCompletionBehavior;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* A transport pause freezes the authored pose. Returning to the configured
|
|
9
|
+
* boundary pose is reserved for an explicitly completed playback.
|
|
10
|
+
*/
|
|
11
|
+
export declare function shouldStartViewerPlaybackCompletionTransition(input: ViewerPlaybackCompletionTransitionInput): boolean;
|
|
12
|
+
export interface ViewerPlaybackPhysicsAdvanceInput {
|
|
13
|
+
hasPlaybackState: boolean;
|
|
14
|
+
isPlaying: boolean;
|
|
15
|
+
bufferedProjectionActive: boolean;
|
|
16
|
+
completionTransitionActive: boolean;
|
|
17
|
+
boundaryTransitionActive: boolean;
|
|
18
|
+
}
|
|
19
|
+
/** A buffered projection has already been simulated and must never be stepped twice. */
|
|
20
|
+
export declare function shouldAdvanceViewerPlaybackPhysics(input: ViewerPlaybackPhysicsAdvanceInput): boolean;
|
|
21
|
+
export interface ViewerPlaybackProjectionTimeInput {
|
|
22
|
+
synchronizedTimeSeconds: number;
|
|
23
|
+
elapsedSeconds: number;
|
|
24
|
+
playbackRate: number;
|
|
25
|
+
authoritativeTimeSeconds?: number | null;
|
|
26
|
+
}
|
|
27
|
+
/** The transport clock wins; local elapsed time is only a degraded fallback. */
|
|
28
|
+
export declare function resolveViewerPlaybackProjectionTime(input: ViewerPlaybackProjectionTimeInput): number;
|
|
29
|
+
//# sourceMappingURL=ViewerPlaybackCompletionPolicy.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerPlaybackCompletionPolicy.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerPlaybackCompletionPolicy.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,gCAAgC,GAAG,MAAM,GAAG,mBAAmB,CAAC;AAE5E,MAAM,WAAW,uCAAuC;IACtD,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,kBAAkB,EAAE,gCAAgC,CAAC;CACtD;AAED;;;GAGG;AACH,wBAAgB,6CAA6C,CAC3D,KAAK,EAAE,uCAAuC,GAC7C,OAAO,CAMT;AAED,MAAM,WAAW,iCAAiC;IAChD,gBAAgB,EAAE,OAAO,CAAC;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,wBAAwB,EAAE,OAAO,CAAC;IAClC,0BAA0B,EAAE,OAAO,CAAC;IACpC,wBAAwB,EAAE,OAAO,CAAC;CACnC;AAED,wFAAwF;AACxF,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,iCAAiC,GACvC,OAAO,CAUT;AAED,MAAM,WAAW,iCAAiC;IAChD,uBAAuB,EAAE,MAAM,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,wBAAwB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1C;AAED,gFAAgF;AAChF,wBAAgB,mCAAmC,CACjD,KAAK,EAAE,iCAAiC,GACvC,MAAM,CAYR"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A transport pause freezes the authored pose. Returning to the configured
|
|
3
|
+
* boundary pose is reserved for an explicitly completed playback.
|
|
4
|
+
*/
|
|
5
|
+
export function shouldStartViewerPlaybackCompletionTransition(input) {
|
|
6
|
+
return (!input.isPlaying &&
|
|
7
|
+
input.completionReached &&
|
|
8
|
+
input.completionBehavior === 'return-to-default');
|
|
9
|
+
}
|
|
10
|
+
/** A buffered projection has already been simulated and must never be stepped twice. */
|
|
11
|
+
export function shouldAdvanceViewerPlaybackPhysics(input) {
|
|
12
|
+
if (input.bufferedProjectionActive || input.boundaryTransitionActive) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
return (!input.hasPlaybackState ||
|
|
16
|
+
input.isPlaying ||
|
|
17
|
+
input.completionTransitionActive);
|
|
18
|
+
}
|
|
19
|
+
/** The transport clock wins; local elapsed time is only a degraded fallback. */
|
|
20
|
+
export function resolveViewerPlaybackProjectionTime(input) {
|
|
21
|
+
if (typeof input.authoritativeTimeSeconds === 'number' &&
|
|
22
|
+
Number.isFinite(input.authoritativeTimeSeconds)) {
|
|
23
|
+
return Math.max(0, input.authoritativeTimeSeconds);
|
|
24
|
+
}
|
|
25
|
+
return Math.max(0, input.synchronizedTimeSeconds + input.elapsedSeconds * input.playbackRate);
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=ViewerPlaybackCompletionPolicy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerPlaybackCompletionPolicy.js","sourceRoot":"","sources":["../../src/renderer/ViewerPlaybackCompletionPolicy.ts"],"names":[],"mappings":"AAQA;;;GAGG;AACH,MAAM,UAAU,6CAA6C,CAC3D,KAA8C;IAE9C,OAAO,CACL,CAAC,KAAK,CAAC,SAAS;QAChB,KAAK,CAAC,iBAAiB;QACvB,KAAK,CAAC,kBAAkB,KAAK,mBAAmB,CACjD,CAAC;AACJ,CAAC;AAUD,wFAAwF;AACxF,MAAM,UAAU,kCAAkC,CAChD,KAAwC;IAExC,IAAI,KAAK,CAAC,wBAAwB,IAAI,KAAK,CAAC,wBAAwB,EAAE,CAAC;QACrE,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO,CACL,CAAC,KAAK,CAAC,gBAAgB;QACvB,KAAK,CAAC,SAAS;QACf,KAAK,CAAC,0BAA0B,CACjC,CAAC;AACJ,CAAC;AASD,gFAAgF;AAChF,MAAM,UAAU,mCAAmC,CACjD,KAAwC;IAExC,IACE,OAAO,KAAK,CAAC,wBAAwB,KAAK,QAAQ;QAClD,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,wBAAwB,CAAC,EAC/C,CAAC;QACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,wBAAwB,CAAC,CAAC;IACrD,CAAC;IAED,OAAO,IAAI,CAAC,GAAG,CACb,CAAC,EACD,KAAK,CAAC,uBAAuB,GAAG,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,CAC1E,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { InstancedMesh, Vector3 } from 'three';
|
|
2
|
+
export type ViewerProjectileVisualPhase = 'flight' | 'robot-contact' | 'ground-contact' | 'settled' | 'fading';
|
|
3
|
+
export declare class ViewerProjectileParticleRenderer {
|
|
4
|
+
readonly capacity: number;
|
|
5
|
+
readonly mesh: InstancedMesh;
|
|
6
|
+
private readonly active;
|
|
7
|
+
private readonly phaseColor;
|
|
8
|
+
private readonly fadeStartedAt;
|
|
9
|
+
private readonly occupied;
|
|
10
|
+
private readonly matrix;
|
|
11
|
+
private readonly euler;
|
|
12
|
+
private readonly rotation;
|
|
13
|
+
constructor(capacity: number, radiusMeters: number, fadeDurationSeconds: number);
|
|
14
|
+
allocate(): number | null;
|
|
15
|
+
release(slot: number): void;
|
|
16
|
+
updateTransform(slot: number, position: Vector3, rotationX: number, rotationY: number, scale?: number): void;
|
|
17
|
+
setPhase(slot: number, phase: ViewerProjectileVisualPhase, nowSeconds: number): void;
|
|
18
|
+
setTime(nowSeconds: number): void;
|
|
19
|
+
dispose(): void;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=ViewerProjectileParticleRenderer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewerProjectileParticleRenderer.d.ts","sourceRoot":"","sources":["../../src/renderer/ViewerProjectileParticleRenderer.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,aAAa,EAKb,OAAO,EACR,MAAM,OAAO,CAAC;AAEf,MAAM,MAAM,2BAA2B,GACnC,QAAQ,GACR,eAAe,GACf,gBAAgB,GAChB,SAAS,GACT,QAAQ,CAAC;AAab,qBAAa,gCAAgC;IAYzC,QAAQ,CAAC,QAAQ,EAAE,MAAM;IAX3B,QAAQ,CAAC,IAAI,EAAE,aAAa,CAAC;IAE7B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA2B;IAClD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA2B;IACtD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAA2B;IACzD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAY;IACrC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAe;IACrC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoB;gBAGlC,QAAQ,EAAE,MAAM,EACzB,YAAY,EAAE,MAAM,EACpB,mBAAmB,EAAE,MAAM;IA0E7B,QAAQ,IAAI,MAAM,GAAG,IAAI;IAWzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAS3B,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,IAAI;IAQvG,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,2BAA2B,EAAE,UAAU,EAAE,MAAM,GAAG,IAAI;IAQpF,OAAO,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI;IAIjC,OAAO,IAAI,IAAI;CAIhB"}
|