@3dsource/angular-unreal-module 0.0.70 → 0.0.72
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
|
-
import { InjectionToken, inject, Injectable, signal, ChangeDetectionStrategy, Component, Pipe, ElementRef, input, HostListener, Input, ViewChild, DestroyRef, computed, viewChild, effect, untracked, output } from '@angular/core';
|
|
2
|
+
import { InjectionToken, inject, Injectable, signal, makeEnvironmentProviders, provideEnvironmentInitializer, ChangeDetectionStrategy, Component, Pipe, ElementRef, input, HostListener, Input, ViewChild, DestroyRef, computed, viewChild, effect, untracked, output } from '@angular/core';
|
|
3
3
|
import { filter, withLatestFrom, distinctUntilChanged, switchMap, catchError, timeout, tap, map as map$1, takeUntil, exhaustMap, debounceTime, takeWhile, delay, skip as skip$1 } from 'rxjs/operators';
|
|
4
4
|
import { createAction, props, Store, provideState, createReducer, on, createFeature, createSelector } from '@ngrx/store';
|
|
5
5
|
import { Actions, ofType, provideEffects, createEffect } from '@ngrx/effects';
|
|
@@ -305,9 +305,9 @@ class AFKService extends SubService {
|
|
|
305
305
|
this.countdown = 0; // The inactivity warning overlay has a countdown to show time until disconnect.
|
|
306
306
|
this.selectWarnTimeout = this.store.selectSignal(selectWarnTimeout);
|
|
307
307
|
this.isViewportReady = this.store.selectSignal(unrealFeature.selectViewportReady);
|
|
308
|
-
this.
|
|
308
|
+
this.init();
|
|
309
309
|
}
|
|
310
|
-
|
|
310
|
+
init() {
|
|
311
311
|
merge(this.store.select(selectWarnTimeout), fromSignal(UnrealInternalSignalEvents.RestAfkTimer))
|
|
312
312
|
.pipe(withLatestFrom(this.store.select(unrealFeature.selectViewportReady)), filter(([, viewportReady]) => viewportReady))
|
|
313
313
|
.subscribe(() => this.resetAfkWarningTimer());
|
|
@@ -317,9 +317,6 @@ class AFKService extends SubService {
|
|
|
317
317
|
.subscribe(() => this.startAfkWarningTimer());
|
|
318
318
|
this.disconnect$.subscribe(() => this.stop());
|
|
319
319
|
}
|
|
320
|
-
init() {
|
|
321
|
-
// do nothing, just to not forget to initialize Service
|
|
322
|
-
}
|
|
323
320
|
hideOverlay() {
|
|
324
321
|
sendSignal(UnrealInternalSignalEvents.ClickableOverlay);
|
|
325
322
|
this.store.dispatch(setAfkTimerHide());
|
|
@@ -336,7 +333,7 @@ class AFKService extends SubService {
|
|
|
336
333
|
*/
|
|
337
334
|
resetAfkWarningTimer() {
|
|
338
335
|
if (this.active) {
|
|
339
|
-
this.
|
|
336
|
+
this.clearTimers();
|
|
340
337
|
this.warnTimer = setTimeout(() => {
|
|
341
338
|
this.showAfkOverlay();
|
|
342
339
|
}, this.selectWarnTimeout() * 1000);
|
|
@@ -361,9 +358,12 @@ class AFKService extends SubService {
|
|
|
361
358
|
onOverlayClick: () => this.reset(),
|
|
362
359
|
});
|
|
363
360
|
}
|
|
364
|
-
|
|
361
|
+
clearTimers() {
|
|
365
362
|
clearInterval(this.countdownTimer);
|
|
366
363
|
clearTimeout(this.warnTimer);
|
|
364
|
+
}
|
|
365
|
+
stop() {
|
|
366
|
+
this.clearTimers();
|
|
367
367
|
this.hideOverlay();
|
|
368
368
|
}
|
|
369
369
|
reset() {
|
|
@@ -408,10 +408,11 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
408
408
|
|
|
409
409
|
class FreezeFrameService extends SubService {
|
|
410
410
|
constructor() {
|
|
411
|
-
super(
|
|
411
|
+
super();
|
|
412
412
|
this.receiving = false;
|
|
413
413
|
this.size = 0;
|
|
414
414
|
this.freezeFrameOverlay = new Image();
|
|
415
|
+
this.init();
|
|
415
416
|
}
|
|
416
417
|
init() {
|
|
417
418
|
this.store
|
|
@@ -477,12 +478,12 @@ class FreezeFrameService extends SubService {
|
|
|
477
478
|
progress: 1,
|
|
478
479
|
}));
|
|
479
480
|
}
|
|
480
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFrameService, deps:
|
|
481
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFrameService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
481
482
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFrameService }); }
|
|
482
483
|
}
|
|
483
484
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFrameService, decorators: [{
|
|
484
485
|
type: Injectable
|
|
485
|
-
}] });
|
|
486
|
+
}], ctorParameters: () => [] });
|
|
486
487
|
|
|
487
488
|
class DataFlowMonitor {
|
|
488
489
|
/**
|
|
@@ -606,6 +607,9 @@ class VideoService extends SubService {
|
|
|
606
607
|
? // IMPORTANT! DO NOT CHANGE THOSE NUMBERS, LBM Stats are based on those values
|
|
607
608
|
interval(250).pipe(map(() => track.pcClient), switchMap((pcClient) => from(this.getStats(pcClient))), filter(Truthy))
|
|
608
609
|
: of(null)), filter(Truthy), share());
|
|
610
|
+
this.init();
|
|
611
|
+
}
|
|
612
|
+
init() {
|
|
609
613
|
Signal.on('setKalmanParams').subscribe((data) => {
|
|
610
614
|
this.kalmanFilter1D.config(data);
|
|
611
615
|
BITRATE_MONITOR.config(data);
|
|
@@ -866,6 +870,9 @@ class CommandTelemetryService {
|
|
|
866
870
|
this.unrealInitialConfig = inject(UNREAL_CONFIG, {
|
|
867
871
|
optional: true,
|
|
868
872
|
});
|
|
873
|
+
this.init();
|
|
874
|
+
}
|
|
875
|
+
init() {
|
|
869
876
|
if (!this.unrealInitialConfig?.commandTelemetryReceiver) {
|
|
870
877
|
return;
|
|
871
878
|
}
|
|
@@ -1188,6 +1195,9 @@ class SignallingService extends SubService {
|
|
|
1188
1195
|
this.onWebRtcAnswer$ = new Subject();
|
|
1189
1196
|
this.abort$ = this.action$.pipe(ofType(abortEstablishingConnection));
|
|
1190
1197
|
this.wsMsgHandlers = {};
|
|
1198
|
+
this.init();
|
|
1199
|
+
}
|
|
1200
|
+
init() {
|
|
1191
1201
|
this.setHandlersFromStream();
|
|
1192
1202
|
this.store
|
|
1193
1203
|
.select(unrealFeature.selectDataChannelConnected)
|
|
@@ -1400,8 +1410,8 @@ class SignallingService extends SubService {
|
|
|
1400
1410
|
Logger.log('WS HANDLERS ADDED');
|
|
1401
1411
|
OnOpenHandler.call(this);
|
|
1402
1412
|
}
|
|
1403
|
-
showStatusMessage(
|
|
1404
|
-
this.store.dispatch(setStatusMessage({
|
|
1413
|
+
showStatusMessage(statusMessage) {
|
|
1414
|
+
this.store.dispatch(setStatusMessage({ statusMessage }));
|
|
1405
1415
|
}
|
|
1406
1416
|
/**
|
|
1407
1417
|
* Close the connection with the signaling server
|
|
@@ -1496,9 +1506,9 @@ class WebRtcPlayerService extends SubService {
|
|
|
1496
1506
|
this.useMic = false;
|
|
1497
1507
|
this.forceTURN = false;
|
|
1498
1508
|
this.forceMonoAudio = false;
|
|
1499
|
-
this.
|
|
1509
|
+
this.init();
|
|
1500
1510
|
}
|
|
1501
|
-
|
|
1511
|
+
init() {
|
|
1502
1512
|
const iceCandidateBuffer = [];
|
|
1503
1513
|
const processBuffer = () => {
|
|
1504
1514
|
iceCandidateBuffer.forEach((cnd) => {
|
|
@@ -1547,7 +1557,6 @@ class WebRtcPlayerService extends SubService {
|
|
|
1547
1557
|
}
|
|
1548
1558
|
createDataChannel(pc, label, options) {
|
|
1549
1559
|
// This is the primary data channel code path when we are "offering"
|
|
1550
|
-
Logger.info(`[DATACHANNEL] Creating datachannel primary (${label})...`);
|
|
1551
1560
|
const datachannel = pc.createDataChannel(label, options);
|
|
1552
1561
|
return this.setupDataChannelCallbacks(datachannel);
|
|
1553
1562
|
}
|
|
@@ -1612,7 +1621,8 @@ class WebRtcPlayerService extends SubService {
|
|
|
1612
1621
|
this.dcClient.send(data);
|
|
1613
1622
|
}
|
|
1614
1623
|
else {
|
|
1615
|
-
|
|
1624
|
+
const error = `DataChannel connection not prepared or in state: ${this.dcClient?.readyState}`;
|
|
1625
|
+
throw new Error(error);
|
|
1616
1626
|
}
|
|
1617
1627
|
}
|
|
1618
1628
|
setConfig(parOptions = {}) {
|
|
@@ -1651,7 +1661,7 @@ class WebRtcPlayerService extends SubService {
|
|
|
1651
1661
|
TelemetryStart('Signaling state change');
|
|
1652
1662
|
this.handlePeerConnectionEvents(this.pcClient);
|
|
1653
1663
|
await this.setupTransceiversAsync(this.pcClient);
|
|
1654
|
-
this.dcClient = this.createDataChannel(this.pcClient, '
|
|
1664
|
+
this.dcClient = this.createDataChannel(this.pcClient, 'UnrealDcConnection', {
|
|
1655
1665
|
// See https://www.w3.org/TR/webrtc/#dom-rtcdatachannelinit for values (this is needed for Firefox to be consistent with Chrome.)
|
|
1656
1666
|
ordered: true,
|
|
1657
1667
|
});
|
|
@@ -1764,6 +1774,7 @@ class WebRtcPlayerService extends SubService {
|
|
|
1764
1774
|
}
|
|
1765
1775
|
setupDataChannelCallbacks(datachannel) {
|
|
1766
1776
|
try {
|
|
1777
|
+
Logger.log(`[DATACHANNEL] Setting up datachannel "${datachannel.label}" callbacks...`);
|
|
1767
1778
|
TelemetryStart('DataChannel Connection');
|
|
1768
1779
|
// Inform browser we would like binary data as an ArrayBuffer (FF chooses Blob by default!)
|
|
1769
1780
|
datachannel.binaryType = 'arraybuffer';
|
|
@@ -1779,12 +1790,12 @@ class WebRtcPlayerService extends SubService {
|
|
|
1779
1790
|
fromEvent(datachannel, 'error')
|
|
1780
1791
|
.pipe(takeUntil(this.disconnect$))
|
|
1781
1792
|
.subscribe((e) => {
|
|
1782
|
-
const message = `[DATACHANNEL] Data channel
|
|
1793
|
+
const message = `[DATACHANNEL] Data channel "${datachannel.label}" error. id:${datachannel.id}`;
|
|
1783
1794
|
Logger.error(message, e);
|
|
1784
1795
|
});
|
|
1785
1796
|
fromEvent(datachannel, 'open')
|
|
1786
1797
|
.pipe(tap$1(() => {
|
|
1787
|
-
Logger.info(`[DATACHANNEL] Data channel
|
|
1798
|
+
Logger.info(`[DATACHANNEL] Data channel "${datachannel.label}" connected. id:${datachannel.id}`);
|
|
1788
1799
|
}), takeUntil(this.disconnect$))
|
|
1789
1800
|
.subscribe(() => {
|
|
1790
1801
|
TelemetryStop('DataChannel Connection');
|
|
@@ -1801,12 +1812,12 @@ class WebRtcPlayerService extends SubService {
|
|
|
1801
1812
|
}
|
|
1802
1813
|
}
|
|
1803
1814
|
onDataChannelConnected() {
|
|
1804
|
-
let
|
|
1815
|
+
let statusMessage = 'Session connected, video stream starting.';
|
|
1805
1816
|
if (navigator.userAgent.includes('Firefox')) {
|
|
1806
|
-
|
|
1817
|
+
statusMessage +=
|
|
1807
1818
|
'\n If you are experiencing connection problems please try Google Chrome';
|
|
1808
1819
|
}
|
|
1809
|
-
this.store.dispatch(setDataChannelConnected({
|
|
1820
|
+
this.store.dispatch(setDataChannelConnected({ statusMessage }));
|
|
1810
1821
|
}
|
|
1811
1822
|
async createOffer(pcClient) {
|
|
1812
1823
|
try {
|
|
@@ -1879,6 +1890,9 @@ class FileReceiverService extends SubService {
|
|
|
1879
1890
|
this.extension = '';
|
|
1880
1891
|
this.timestampStart = 0;
|
|
1881
1892
|
this.data = [];
|
|
1893
|
+
this.init();
|
|
1894
|
+
}
|
|
1895
|
+
init() {
|
|
1882
1896
|
this.store
|
|
1883
1897
|
.select(unrealFeature.selectViewportReady)
|
|
1884
1898
|
.pipe(filter(Truthy))
|
|
@@ -1993,11 +2007,16 @@ class AggregatorService extends SubService {
|
|
|
1993
2007
|
* Never called for now
|
|
1994
2008
|
*/
|
|
1995
2009
|
this.destroy$ = new Subject();
|
|
2010
|
+
this.init();
|
|
2011
|
+
}
|
|
2012
|
+
init() {
|
|
1996
2013
|
this.listenWebRTC();
|
|
1997
2014
|
this.initialize();
|
|
1998
2015
|
}
|
|
1999
|
-
|
|
2000
|
-
|
|
2016
|
+
listenWebRTC() {
|
|
2017
|
+
this.webrtcPlayer.onDataChannelMessage$
|
|
2018
|
+
.pipe(takeUntil(this.destroy$))
|
|
2019
|
+
.subscribe((data) => this.dataChannelMessageHandler(data));
|
|
2001
2020
|
}
|
|
2002
2021
|
initialize() {
|
|
2003
2022
|
this.store
|
|
@@ -2085,11 +2104,6 @@ class AggregatorService extends SubService {
|
|
|
2085
2104
|
resetResponseList() {
|
|
2086
2105
|
this.responseEventListeners.clear();
|
|
2087
2106
|
}
|
|
2088
|
-
listenWebRTC() {
|
|
2089
|
-
this.webrtcPlayer.onDataChannelMessage$
|
|
2090
|
-
.pipe(takeUntil(this.destroy$))
|
|
2091
|
-
.subscribe((data) => this.dataChannelMessageHandler(data));
|
|
2092
|
-
}
|
|
2093
2107
|
dataChannelMessageHandler(data) {
|
|
2094
2108
|
const view = new Uint8Array(data);
|
|
2095
2109
|
const anyData = data.slice(1);
|
|
@@ -2171,13 +2185,14 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
2171
2185
|
}], ctorParameters: () => [] });
|
|
2172
2186
|
|
|
2173
2187
|
class ConsoleExtensionsService extends SubService {
|
|
2188
|
+
#httpClient = inject(HttpClient);
|
|
2189
|
+
#isDevMode = inject(DevModeService).isDevMode;
|
|
2174
2190
|
constructor() {
|
|
2175
|
-
super(
|
|
2176
|
-
this.
|
|
2177
|
-
this.isDevMode = inject(DevModeService).isDevMode;
|
|
2191
|
+
super();
|
|
2192
|
+
this.init();
|
|
2178
2193
|
}
|
|
2179
2194
|
init() {
|
|
2180
|
-
if (!this
|
|
2195
|
+
if (!this.#isDevMode) {
|
|
2181
2196
|
return;
|
|
2182
2197
|
}
|
|
2183
2198
|
window.dropConnection = () => {
|
|
@@ -2201,7 +2216,7 @@ class ConsoleExtensionsService extends SubService {
|
|
|
2201
2216
|
window.restartApp = () => {
|
|
2202
2217
|
this.store
|
|
2203
2218
|
.select(unrealFeature.selectAwsInstance)
|
|
2204
|
-
.pipe(take(1), filter((data) => !!data.instanceName), tapLog('Instance', `Restart initiated`), switchMap$1((data) => this
|
|
2219
|
+
.pipe(take(1), filter((data) => !!data.instanceName), tapLog('Instance', `Restart initiated`), switchMap$1((data) => this.#httpClient.get(`//${data.instanceName}/restartapp`)), catchError(() => of(null)))
|
|
2205
2220
|
.subscribe();
|
|
2206
2221
|
};
|
|
2207
2222
|
window.unrealHelp = () => this.unrealHelp();
|
|
@@ -2218,12 +2233,12 @@ class ConsoleExtensionsService extends SubService {
|
|
|
2218
2233
|
Logger.info('setWarnTime() => set time to appear the AFK window.');
|
|
2219
2234
|
Logger.info('emitCommand(command) => send command to Unreal Engine.');
|
|
2220
2235
|
}
|
|
2221
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsService, deps:
|
|
2236
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
2222
2237
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsService }); }
|
|
2223
2238
|
}
|
|
2224
2239
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsService, decorators: [{
|
|
2225
2240
|
type: Injectable
|
|
2226
|
-
}] });
|
|
2241
|
+
}], ctorParameters: () => [] });
|
|
2227
2242
|
|
|
2228
2243
|
class DevModeService {
|
|
2229
2244
|
get isDevMode() {
|
|
@@ -2403,19 +2418,17 @@ class TouchEmulator {
|
|
|
2403
2418
|
|
|
2404
2419
|
class UnrealCommunicatorService {
|
|
2405
2420
|
constructor() {
|
|
2421
|
+
this.store = inject(Store);
|
|
2406
2422
|
this.telemetry = inject(CommandTelemetryService);
|
|
2407
|
-
this.afkService = inject(AFKService);
|
|
2408
2423
|
this.freezeFrame = inject(FreezeFrameService);
|
|
2409
2424
|
this.webrtcPlayer = inject(WebRtcPlayerService);
|
|
2410
2425
|
this.videoService = inject(VideoService);
|
|
2411
|
-
this.consoleExtensions = inject(ConsoleExtensionsService);
|
|
2412
|
-
this.store = inject(Store);
|
|
2413
2426
|
this.destroy$ = new Subject();
|
|
2414
2427
|
this.cirrusConnected = toSignal(this.store.select(unrealFeature.selectCirrusConnected));
|
|
2428
|
+
this.init();
|
|
2429
|
+
}
|
|
2430
|
+
init() {
|
|
2415
2431
|
this.emitUIInteraction = this.telemetry.decorate(this.emitUIInteraction.bind(this));
|
|
2416
|
-
this.consoleExtensions.init();
|
|
2417
|
-
this.afkService.init();
|
|
2418
|
-
this.freezeFrame.init();
|
|
2419
2432
|
this.listenVideo();
|
|
2420
2433
|
this.store
|
|
2421
2434
|
.select(unrealFeature.selectDataChannelConnected)
|
|
@@ -2462,7 +2475,7 @@ class UnrealCommunicatorService {
|
|
|
2462
2475
|
}
|
|
2463
2476
|
catch (error) {
|
|
2464
2477
|
if (this.cirrusConnected()) {
|
|
2465
|
-
Logger.error(
|
|
2478
|
+
Logger.error(error);
|
|
2466
2479
|
}
|
|
2467
2480
|
}
|
|
2468
2481
|
}
|
|
@@ -3104,7 +3117,12 @@ class StreamStatusTelemetryService {
|
|
|
3104
3117
|
constructor() {
|
|
3105
3118
|
this.store = inject(Store);
|
|
3106
3119
|
this.videoService = inject(VideoService);
|
|
3107
|
-
this.
|
|
3120
|
+
this.init();
|
|
3121
|
+
}
|
|
3122
|
+
init() {
|
|
3123
|
+
this.videoService.videoStats$
|
|
3124
|
+
.pipe(withLatestFrom(this.store.select(unrealFeature.selectAwsInstance), this.store.select(unrealFeature.selectLowBandwidth), this.store.select(unrealFeature.selectLowBandwidthStats), this.store.select(unrealFeature.selectCirrusConnected)), auditTime(5000), filter(([, , , , cirrusConnected]) => cirrusConnected), map$1(([data, signalingServer, isLowBandwidth, lbmStats]) => this.mapEventData(data, signalingServer, isLowBandwidth, lbmStats)))
|
|
3125
|
+
.subscribe((data) => this.trackEventToMixPanel(data));
|
|
3108
3126
|
}
|
|
3109
3127
|
mapEventData(data, signalingServer, isLowBandwidth, lbmStats) {
|
|
3110
3128
|
const { bitrate, VideoEncoderQP, framesPerSecond, frameWidth, frameHeight, jitter, packetsLost, currentRoundTripTime, } = data.aggregatedStats;
|
|
@@ -3125,17 +3143,9 @@ class StreamStatusTelemetryService {
|
|
|
3125
3143
|
VideoEncoderQP,
|
|
3126
3144
|
};
|
|
3127
3145
|
}
|
|
3128
|
-
initTelemetry() {
|
|
3129
|
-
this.videoService.videoStats$
|
|
3130
|
-
.pipe(withLatestFrom(this.store.select(unrealFeature.selectAwsInstance), this.store.select(unrealFeature.selectLowBandwidth), this.store.select(unrealFeature.selectLowBandwidthStats), this.store.select(unrealFeature.selectCirrusConnected)), auditTime(5000), filter(([, , , , cirrusConnected]) => cirrusConnected), map$1(([data, signalingServer, isLowBandwidth, lbmStats]) => this.mapEventData(data, signalingServer, isLowBandwidth, lbmStats)))
|
|
3131
|
-
.subscribe((data) => this.trackEventToMixPanel(data));
|
|
3132
|
-
}
|
|
3133
3146
|
trackEventToMixPanel(data) {
|
|
3134
3147
|
this.store.dispatch(trackMixpanelEvent({ event: 'streamStatus', data }));
|
|
3135
3148
|
}
|
|
3136
|
-
init() {
|
|
3137
|
-
// do nothing, just to not forget to initialize Service
|
|
3138
|
-
}
|
|
3139
3149
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: StreamStatusTelemetryService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3140
3150
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: StreamStatusTelemetryService }); }
|
|
3141
3151
|
}
|
|
@@ -3144,7 +3154,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3144
3154
|
}], ctorParameters: () => [] });
|
|
3145
3155
|
|
|
3146
3156
|
class AfkPlaywrightService extends AFKService {
|
|
3147
|
-
|
|
3157
|
+
init() {
|
|
3148
3158
|
return;
|
|
3149
3159
|
}
|
|
3150
3160
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: AfkPlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3161,7 +3171,7 @@ class SignallingPlaywrightService extends SignallingService {
|
|
|
3161
3171
|
connectToSignaling() {
|
|
3162
3172
|
this.store.dispatch(setUnrealPlaywrightConfig());
|
|
3163
3173
|
this.store.dispatch(setDataChannelConnected({
|
|
3164
|
-
|
|
3174
|
+
statusMessage: 'Playwright set data channel connected',
|
|
3165
3175
|
}));
|
|
3166
3176
|
return EMPTY;
|
|
3167
3177
|
}
|
|
@@ -3173,6 +3183,9 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3173
3183
|
}], ctorParameters: () => [] });
|
|
3174
3184
|
|
|
3175
3185
|
class UnrealCommunicatorPlaywrightService extends UnrealCommunicatorService {
|
|
3186
|
+
init() {
|
|
3187
|
+
return;
|
|
3188
|
+
}
|
|
3176
3189
|
sendCommandToUnreal() {
|
|
3177
3190
|
return;
|
|
3178
3191
|
}
|
|
@@ -3190,10 +3203,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3190
3203
|
}] });
|
|
3191
3204
|
|
|
3192
3205
|
class AggregatorPlaywrightService extends AggregatorService {
|
|
3193
|
-
|
|
3194
|
-
return;
|
|
3195
|
-
}
|
|
3196
|
-
initialize() {
|
|
3206
|
+
init() {
|
|
3197
3207
|
return;
|
|
3198
3208
|
}
|
|
3199
3209
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: AggregatorPlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3207,9 +3217,6 @@ class FreezeFramePlaywrightService extends FreezeFrameService {
|
|
|
3207
3217
|
init() {
|
|
3208
3218
|
return;
|
|
3209
3219
|
}
|
|
3210
|
-
invalidate() {
|
|
3211
|
-
return;
|
|
3212
|
-
}
|
|
3213
3220
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFramePlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3214
3221
|
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: FreezeFramePlaywrightService }); }
|
|
3215
3222
|
}
|
|
@@ -3218,10 +3225,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3218
3225
|
}] });
|
|
3219
3226
|
|
|
3220
3227
|
class CommandTelemetryPlaywrightService extends CommandTelemetryService {
|
|
3221
|
-
|
|
3222
|
-
return;
|
|
3223
|
-
}
|
|
3224
|
-
listenCallbacks() {
|
|
3228
|
+
init() {
|
|
3225
3229
|
return;
|
|
3226
3230
|
}
|
|
3227
3231
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: CommandTelemetryPlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3232,7 +3236,7 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3232
3236
|
}] });
|
|
3233
3237
|
|
|
3234
3238
|
class StreamStatusTelemetryPlaywrightService extends StreamStatusTelemetryService {
|
|
3235
|
-
|
|
3239
|
+
init() {
|
|
3236
3240
|
return;
|
|
3237
3241
|
}
|
|
3238
3242
|
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: StreamStatusTelemetryPlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
@@ -3242,6 +3246,23 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3242
3246
|
type: Injectable
|
|
3243
3247
|
}] });
|
|
3244
3248
|
|
|
3249
|
+
class ConsoleExtensionsPlaywrightService extends ConsoleExtensionsService {
|
|
3250
|
+
init() {
|
|
3251
|
+
return;
|
|
3252
|
+
}
|
|
3253
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsPlaywrightService, deps: null, target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
3254
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsPlaywrightService }); }
|
|
3255
|
+
}
|
|
3256
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImport: i0, type: ConsoleExtensionsPlaywrightService, decorators: [{
|
|
3257
|
+
type: Injectable
|
|
3258
|
+
}] });
|
|
3259
|
+
|
|
3260
|
+
class FileReceiverPlaywrightService extends FileReceiverService {
|
|
3261
|
+
init() {
|
|
3262
|
+
return;
|
|
3263
|
+
}
|
|
3264
|
+
}
|
|
3265
|
+
|
|
3245
3266
|
/*
|
|
3246
3267
|
* Copyright (c) 2025.
|
|
3247
3268
|
* 3DSource.com. Sergii Karanda steve@3dsource.com. All Rights Reserved.
|
|
@@ -3286,17 +3307,8 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
3286
3307
|
type: Injectable
|
|
3287
3308
|
}] });
|
|
3288
3309
|
|
|
3289
|
-
function
|
|
3310
|
+
function providePlaywrightProviders(config) {
|
|
3290
3311
|
return [
|
|
3291
|
-
provideState(unrealFeature),
|
|
3292
|
-
provideEffects([UnrealEffects]),
|
|
3293
|
-
ConsoleExtensionsService,
|
|
3294
|
-
InputService,
|
|
3295
|
-
VideoService,
|
|
3296
|
-
WebRtcPlayerService,
|
|
3297
|
-
RegionsPingService,
|
|
3298
|
-
FileReceiverService,
|
|
3299
|
-
FileHandlerService,
|
|
3300
3312
|
{
|
|
3301
3313
|
provide: StreamStatusTelemetryService,
|
|
3302
3314
|
useClass: config?.playwright
|
|
@@ -3337,9 +3349,43 @@ function provideAngularUnrealModule(config) {
|
|
|
3337
3349
|
? SignallingPlaywrightService
|
|
3338
3350
|
: SignallingService,
|
|
3339
3351
|
},
|
|
3352
|
+
{
|
|
3353
|
+
provide: ConsoleExtensionsService,
|
|
3354
|
+
useClass: config?.playwright
|
|
3355
|
+
? ConsoleExtensionsPlaywrightService
|
|
3356
|
+
: ConsoleExtensionsService,
|
|
3357
|
+
},
|
|
3358
|
+
{
|
|
3359
|
+
provide: FileReceiverService,
|
|
3360
|
+
useClass: config?.playwright
|
|
3361
|
+
? FileReceiverPlaywrightService
|
|
3362
|
+
: FileReceiverService,
|
|
3363
|
+
},
|
|
3340
3364
|
];
|
|
3341
3365
|
}
|
|
3342
3366
|
|
|
3367
|
+
function provideAngularUnrealModule(config) {
|
|
3368
|
+
return makeEnvironmentProviders([
|
|
3369
|
+
provideState(unrealFeature),
|
|
3370
|
+
provideEffects([UnrealEffects]),
|
|
3371
|
+
ConsoleExtensionsService,
|
|
3372
|
+
InputService,
|
|
3373
|
+
VideoService,
|
|
3374
|
+
WebRtcPlayerService,
|
|
3375
|
+
RegionsPingService,
|
|
3376
|
+
FileReceiverService,
|
|
3377
|
+
FileHandlerService,
|
|
3378
|
+
providePlaywrightProviders(config),
|
|
3379
|
+
provideEnvironmentInitializer(() => {
|
|
3380
|
+
inject(AggregatorService);
|
|
3381
|
+
inject(StreamStatusTelemetryService);
|
|
3382
|
+
inject(ConsoleExtensionsService);
|
|
3383
|
+
inject(AFKService);
|
|
3384
|
+
inject(FreezeFrameService);
|
|
3385
|
+
}),
|
|
3386
|
+
]);
|
|
3387
|
+
}
|
|
3388
|
+
|
|
3343
3389
|
const initialState = {
|
|
3344
3390
|
streamRequestContext: null,
|
|
3345
3391
|
environmentId: null,
|
|
@@ -3441,15 +3487,16 @@ const unrealReducer = createReducer(initialState, on(changeLowBandwidth, (state,
|
|
|
3441
3487
|
progress: freezeFrameFromVideo.progress || null,
|
|
3442
3488
|
},
|
|
3443
3489
|
};
|
|
3444
|
-
}), on(setStatusMessage,
|
|
3445
|
-
return { ...state, statusMessage
|
|
3490
|
+
}), on(setStatusMessage, (state, { statusMessage }) => {
|
|
3491
|
+
return { ...state, statusMessage };
|
|
3446
3492
|
}), on(setEstablishingConnection, (state, { value }) => {
|
|
3447
3493
|
return { ...state, establishingConnection: value };
|
|
3448
3494
|
}), on(setStatusPercentSignallingServer, (state, { percent }) => {
|
|
3449
3495
|
return { ...state, statusPercentSignallingServer: percent };
|
|
3450
|
-
}), on(setDataChannelConnected, (state) => {
|
|
3496
|
+
}), on(setDataChannelConnected, (state, { statusMessage }) => {
|
|
3451
3497
|
return {
|
|
3452
3498
|
...state,
|
|
3499
|
+
statusMessage,
|
|
3453
3500
|
dataChannelConnected: true,
|
|
3454
3501
|
establishingConnection: false,
|
|
3455
3502
|
wasInitialized: true,
|
|
@@ -4804,19 +4851,15 @@ class UnrealSceneComponent {
|
|
|
4804
4851
|
this.lightMode = this.store.selectSignal(unrealFeature.selectLowBandwidth);
|
|
4805
4852
|
this.isFreezeFrameLoading = this.store.selectSignal(selectIsFreezeFrameLoading);
|
|
4806
4853
|
this.isExistMatchUrls = this.store.selectSignal(selectIsExistMatchUrls);
|
|
4807
|
-
this.aggregatorService = inject(AggregatorService);
|
|
4808
4854
|
this.commandsSender = inject(UnrealCommunicatorService);
|
|
4809
4855
|
this.inputService = inject(InputService);
|
|
4810
4856
|
this.videoService = inject(VideoService);
|
|
4811
|
-
this.streamTelemetryService = inject(StreamStatusTelemetryService);
|
|
4812
4857
|
this.element = inject(ElementRef);
|
|
4813
4858
|
this.destroyRef = inject(DestroyRef);
|
|
4814
4859
|
this.destroyRef.onDestroy(() => {
|
|
4815
4860
|
this.commandsSender.destroy();
|
|
4816
4861
|
this.store.dispatch(destroyUnrealScene());
|
|
4817
4862
|
});
|
|
4818
|
-
this.streamTelemetryService.init();
|
|
4819
|
-
this.aggregatorService.init();
|
|
4820
4863
|
this.inputService.useKeyboardKeys(this.inputService.defaultKeys);
|
|
4821
4864
|
if (this.isExistMatchUrls()) {
|
|
4822
4865
|
this.store.dispatch(initSignalling());
|
|
@@ -5168,5 +5211,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "20.3.11", ngImpo
|
|
|
5168
5211
|
* Generated bundle index. Do not edit.
|
|
5169
5212
|
*/
|
|
5170
5213
|
|
|
5171
|
-
export { AFKService, AfkPlaywrightService, AggregatorPlaywrightService, AggregatorService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, ClickableOverlayComponent, CommandTelemetryPlaywrightService, CommandTelemetryService, ConfigHandler, ConsoleExtensionsService, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DataFlowMonitor, DevModeService, DisconnectReason, EControlSchemeType, EMessageType, EToClientMessageType, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverService, FilterSettingsComponent, FreezeFrameComponent, FreezeFramePlaywrightService, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, ResetTelemetry, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingPlaywrightService, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryPlaywrightService, StreamStatusTelemetryService, SubService, TelemetryStart, TelemetryStop, UNREAL_CONFIG, UnrealCommunicatorPlaywrightService, UnrealCommunicatorService, UnrealEffects, UnrealInternalSignalEvents, UnrealSceneComponent, UnrealStatusMessage, VideoRecorder, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, floatToSmoothPercents, forceResizeUnrealVideo, fromResizeObserver, fromSignal, fromUnrealCallBackSignal, getActiveUrl, getImageFromVideoStream, getRtcErrorMessage, initSignalling, initialState, isLoaderScreenVisible, keepMaxUntilReset, mapQpToQuality, observeCommandResponse, provideAngularUnrealModule, removeExileCommands, resetAfk, resetAfkAction, resetConfig, resetIntroSrc, resetWarnTimeout, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectLoaderCommands, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, sendSignal, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setViewportNotReady, setViewportReady, showPopupWithoutAutoStart, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, unrealFeature, unrealReducer, updateCirrusInfo };
|
|
5214
|
+
export { AFKService, AfkPlaywrightService, AggregatorPlaywrightService, AggregatorService, AnswerHandler, CONSOLE_COMMAND_DISABLE_MESSAGES, CONSOLE_COMMAND_ENABLE_MESSAGES, CONSOLE_COMMAND_PIXEL_QUALITY, ClickableOverlayComponent, CommandTelemetryPlaywrightService, CommandTelemetryService, ConfigHandler, ConsoleExtensionsPlaywrightService, ConsoleExtensionsService, DATA_CHANNEL_CONNECTION_TIMEOUT, DEBOUNCE_TO_MANY_RESIZE_CALLS, DEFAULT_AFK_TIMEOUT, DEFAULT_AFK_TIMEOUT_PERIOD, DataFlowMonitor, DevModeService, DisconnectReason, EControlSchemeType, EMessageType, EToClientMessageType, FULL_HD_HEIGHT, FULL_HD_WIDTH, FileHandlerService, FileReceiverPlaywrightService, FileReceiverService, FilterSettingsComponent, FreezeFrameComponent, FreezeFramePlaywrightService, FreezeFrameService, IceCandidateHandler, ImageLoadingSrcComponent, InputOptions, InputService, InstanceReadyHandler, InstanceReservedHandler, IntroSrcComponent, KalmanFilter1D, LatencyTimings, LowBandwidthDetectorComponent, LowBandwidthModalComponent, MINIMAL_FPS, MouseButton, MouseButtonsMask, OnCloseHandler, OnErrorHandler, OnMessageHandler, OnOpenHandler, OrchestrationMessageTypes, POLLING_TIME, PingHandler, PlayerCountHandler, RegionsPingService, ResetTelemetry, SAME_SIZE_THRESHOLD, SCREEN_LOCKER_CONTAINER_ID, SIGNALLING_PERCENT_VALUE, SSInfoHandler, STREAMING_VIDEO_ID, SafePipe, SignallingPlaywrightService, SignallingService, SpecialKeyCodes, StatGraphComponent, StreamStatusTelemetryPlaywrightService, StreamStatusTelemetryService, SubService, TelemetryStart, TelemetryStop, UNREAL_CONFIG, UnrealCommunicatorPlaywrightService, UnrealCommunicatorService, UnrealEffects, UnrealInternalSignalEvents, UnrealSceneComponent, UnrealStatusMessage, VideoRecorder, VideoService, VideoStatsComponent, WSCloseCode_CIRRUS_ABNORMAL_CLOSURE, WSCloseCode_CIRRUS_MAX_PLAYERS_ERROR, WSCloseCode_CIRRUS_PLAYER_DISCONNECTED, WSCloseCode_CIRRUS_STREAMER_KIKED_PLAYER, WSCloseCode_FORCE_CIRRUS_CLOSE, WSCloseCode_NORMAL_AFK_TIMEOUT, WSCloseCode_NORMAL_CLOSURE, WSCloseCode_NORMAL_MANUAL_DISCONNECT, WSCloseCode_UNKNOWN, WSCloseCodes, WS_OPEN_STATE, WS_TIMEOUT, WebRtcPlayerService, WebrtcErrorModalComponent, abortEstablishingConnection, changeLowBandwidth, changeStatusMainVideoOnScene, changeStreamResolutionAction, changeStreamResolutionSuccessAction, commandCompleted, commandStarted, decodeData, destroyRemoteConnections, destroyUnrealScene, disconnectStream, dispatchResize, dropConnection, floatToSmoothPercents, forceResizeUnrealVideo, fromResizeObserver, fromSignal, fromUnrealCallBackSignal, getActiveUrl, getImageFromVideoStream, getRtcErrorMessage, initSignalling, initialState, isLoaderScreenVisible, keepMaxUntilReset, mapQpToQuality, observeCommandResponse, provideAngularUnrealModule, removeExileCommands, resetAfk, resetAfkAction, resetConfig, resetIntroSrc, resetWarnTimeout, selectClientAndViewIds, selectCommandProgress, selectCommandsInProgress, selectFreezeFrameCombinedDataUrl, selectFreezeFrameDataUrl, selectFreezeFrameDataUrlFromVideo, selectFreezeFrameProgressMessageFromVideo, selectIsAutostart, selectIsExistMatchUrls, selectIsFreezeFrameLoading, selectIsVideoPlayingAndDataChannelConnected, selectLastCommandInProgress, selectLoaderCommands, selectShowLoader, selectShowReconnectPopup, selectSignalingParameters, selectStreamConfig, selectTotalProgress, selectWarnTimeout, sendSignal, setAfkTimerHide, setAfkTimerVisible, setAwsInstance, setCirrusConnected, setCirrusDisconnected, setConfig, setDataChannelConnected, setEstablishingConnection, setFreezeFrame, setFreezeFrameFromVideo, setIntroImageSrc, setIntroVideoSrc, setLoadingImageSrc, setLoopBackCommandIsCompleted, setMaxFps, setOrchestrationContext, setOrchestrationMessage, setOrchestrationParameters, setOrchestrationProgress, setSignalingName, setStatusMessage, setStatusPercentSignallingServer, setStreamClientCompanyId, setStreamViewId, setUnrealPlaywrightConfig, setViewportNotReady, setViewportReady, showPopupWithoutAutoStart, showUnrealErrorMessage, smoothTransition, startStream, trackMixpanelEvent, unrealFeature, unrealReducer, updateCirrusInfo };
|
|
5172
5215
|
//# sourceMappingURL=3dsource-angular-unreal-module.mjs.map
|