@3dsource/angular-unreal-module 0.0.60 → 0.0.62-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/LICENSE CHANGED
@@ -1,14 +1,14 @@
1
- Copyright (c) 2025 3dsource
2
- All Rights Reserved.
3
-
4
- This software and associated documentation files (the “Software”) are proprietary
5
- and confidential. Unauthorized copying, modification, distribution, or any other
6
- use of the Software, in whole or in part, without the prior written consent of
7
- the copyright holder is strictly prohibited.
8
-
9
- THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
10
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11
- FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
12
- COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
13
- IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
14
- CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
1
+ Copyright (c) 2025 3dsource
2
+ All Rights Reserved.
3
+
4
+ This software and associated documentation files (the “Software”) are proprietary
5
+ and confidential. Unauthorized copying, modification, distribution, or any other
6
+ use of the Software, in whole or in part, without the prior written consent of
7
+ the copyright holder is strictly prohibited.
8
+
9
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
10
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
11
+ FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT. IN NO EVENT SHALL THE
12
+ COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
13
+ IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
14
+ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
package/README.md CHANGED
@@ -1,162 +1,162 @@
1
- # @3dsource/angular-unreal-module
2
-
3
- A set of standalone Angular components, services, and providers for integrating Unreal Engine (WebRTC) scenes into Angular applications. It facilitates communication between Angular and Unreal Engine and enables interactive 3D experiences.
4
-
5
- ## Overview
6
-
7
- This package provides:
8
-
9
- - Standalone Unreal scene component to embed UE stream
10
- - Communication bridge (commands, UI interactions, input data)
11
- - NgRx state and effects for 3D stream lifecycle
12
- - Config and utilities for telemetry, errors, and regions ping
13
-
14
- ## Installation
15
-
16
- ### Prerequisites
17
-
18
- - Angular 19+
19
- - NgRx store and effects
20
-
21
- ### Peer Dependencies
22
-
23
- This library requires the following peer dependencies (match or exceed versions):
24
-
25
- ```json
26
- {
27
- "@3dsource/source-ui-native": ">=1.0.9",
28
- "@3dsource/types-unreal": ">=0.0.5",
29
- "@3dsource/utils": ">=1.0.21",
30
- "@angular/cdk": ">=19.0.0",
31
- "@angular/common": ">=19.0.0",
32
- "@angular/core": ">=19.0.0",
33
- "@angular/forms": ">=19.0.0",
34
- "@ngrx/effects": ">=19.0.0",
35
- "@ngrx/store": ">=19.0.0"
36
- }
37
- ```
38
-
39
- ### Library Installation
40
-
41
- ```shell
42
- npm i @3dsource/angular-unreal-module
43
- ```
44
-
45
- ## Usage
46
-
47
- The API is fully standalone (no NgModule). Use providers and components as shown below.
48
-
49
- ### 1) Provide the module services and store slice
50
-
51
- Add providers in your application bootstrap (e.g., app.config.ts):
52
-
53
- ```ts
54
- import { ApplicationConfig } from '@angular/core';
55
- import { provideRouter } from '@angular/router';
56
- import { provideStore } from '@ngrx/store';
57
- import { provideEffects } from '@ngrx/effects';
58
- import { provideAngularUnrealModule, UNREAL_CONFIG } from '@3dsource/angular-unreal-module';
59
-
60
- export const appConfig: ApplicationConfig = {
61
- providers: [
62
- provideRouter([]),
63
- // Root NgRx (if not already added in your app)
64
- provideStore(),
65
- provideEffects(),
66
-
67
- // Unreal providers (adds feature state and effects internally)
68
- ...provideAngularUnrealModule(),
69
-
70
- // Optional initial config
71
- {
72
- provide: UNREAL_CONFIG,
73
- useValue: {
74
- // customErrorsEndpoint?: string,
75
- // commandTelemetryReceiver?: string,
76
- // regionsPingUrl?: string,
77
- // screenLockerContainerId?: string,
78
- // dataChannelConnectionTimeout?: number,
79
- },
80
- },
81
- ],
82
- };
83
- ```
84
-
85
- ### 2) Use the Unreal scene component
86
-
87
- Import the component into a standalone component and use it in the template.
88
-
89
- ```ts
90
- import { Component } from '@angular/core';
91
- import { UnrealSceneComponent } from '@3dsource/angular-unreal-module';
92
-
93
- @Component({
94
- selector: 'app-root',
95
- standalone: true,
96
- imports: [UnrealSceneComponent],
97
- template: ` <app-unreal-scene [isStudio]="false" [useContainerAsSizeProvider]="true" [studioResolutionSize]="{ width: 1920, height: 1080 }" (changeMouseOverScene)="onHover($event)"></app-unreal-scene> `,
98
- })
99
- export class AppComponent {
100
- onHover(isOver: boolean) {
101
- // handle mouse over scene
102
- }
103
- }
104
- ```
105
-
106
- Component selector: <app-unreal-scene>
107
-
108
- Inputs:
109
-
110
- - isStudio: boolean = false
111
- - useContainerAsSizeProvider: boolean = true
112
- - studioResolutionSize: { width: number; height: number } = { width: 1920, height: 1080 }
113
-
114
- Outputs:
115
-
116
- - changeMouseOverScene: EventEmitter<boolean>
117
-
118
- ### 3) Send commands / interactions to Unreal
119
-
120
- Use UnrealCommunicatorService to send commands or UI interactions. Types for command packets are provided by @3dsource/types-unreal.
121
-
122
- ```ts
123
- import { Component, inject } from '@angular/core';
124
- import { UnrealCommunicatorService } from '@3dsource/angular-unreal-module';
125
- import type { MetaBoxCommandPacket } from '@3dsource/types-unreal';
126
-
127
- @Component({ standalone: true, template: '' })
128
- export class MyComponent {
129
- private unreal = inject(UnrealCommunicatorService);
130
-
131
- sendSomeCommand() {
132
- const packet: MetaBoxCommandPacket = {
133
- command: 'SomeCommand',
134
- parameters: {
135
- /* command parameters */
136
- },
137
- } as MetaBoxCommandPacket;
138
-
139
- // Records telemetry and dispatches store events
140
- this.unreal.sendCommandToUnreal(packet);
141
- // Or use:
142
- // this.unreal.emitCommand(packet); // to send as Command message
143
- // this.unreal.emitUIInteraction(packet); // to send as UIInteraction
144
- }
145
- }
146
- ```
147
-
148
- ## Features
149
-
150
- - Standalone Unreal Scene Component
151
- - Command and UI Interaction API via UnrealCommunicatorService
152
- - Event-driven status UI (freeze frame, video stats, play overlay)
153
- - NgRx-powered state management and effects
154
- - Optional initial configuration via UNREAL_CONFIG token
155
-
156
- ## Examples
157
-
158
- Check the demo application for complete usage examples:
159
-
160
- ```shell
161
- npm run demo:start
162
- ```
1
+ # @3dsource/angular-unreal-module
2
+
3
+ A set of standalone Angular components, services, and providers for integrating Unreal Engine (WebRTC) scenes into Angular applications. It facilitates communication between Angular and Unreal Engine and enables interactive 3D experiences.
4
+
5
+ ## Overview
6
+
7
+ This package provides:
8
+
9
+ - Standalone Unreal scene component to embed UE stream
10
+ - Communication bridge (commands, UI interactions, input data)
11
+ - NgRx state and effects for 3D stream lifecycle
12
+ - Config and utilities for telemetry, errors, and regions ping
13
+
14
+ ## Installation
15
+
16
+ ### Prerequisites
17
+
18
+ - Angular 19+
19
+ - NgRx store and effects
20
+
21
+ ### Peer Dependencies
22
+
23
+ This library requires the following peer dependencies (match or exceed versions):
24
+
25
+ ```json
26
+ {
27
+ "@3dsource/source-ui-native": ">=1.0.9",
28
+ "@3dsource/types-unreal": ">=0.0.5",
29
+ "@3dsource/utils": ">=1.0.21",
30
+ "@angular/cdk": ">=19.0.0",
31
+ "@angular/common": ">=19.0.0",
32
+ "@angular/core": ">=19.0.0",
33
+ "@angular/forms": ">=19.0.0",
34
+ "@ngrx/effects": ">=19.0.0",
35
+ "@ngrx/store": ">=19.0.0"
36
+ }
37
+ ```
38
+
39
+ ### Library Installation
40
+
41
+ ```shell
42
+ npm i @3dsource/angular-unreal-module
43
+ ```
44
+
45
+ ## Usage
46
+
47
+ The API is fully standalone (no NgModule). Use providers and components as shown below.
48
+
49
+ ### 1) Provide the module services and store slice
50
+
51
+ Add providers in your application bootstrap (e.g., app.config.ts):
52
+
53
+ ```ts
54
+ import { ApplicationConfig } from '@angular/core';
55
+ import { provideRouter } from '@angular/router';
56
+ import { provideStore } from '@ngrx/store';
57
+ import { provideEffects } from '@ngrx/effects';
58
+ import { provideAngularUnrealModule, UNREAL_CONFIG } from '@3dsource/angular-unreal-module';
59
+
60
+ export const appConfig: ApplicationConfig = {
61
+ providers: [
62
+ provideRouter([]),
63
+ // Root NgRx (if not already added in your app)
64
+ provideStore(),
65
+ provideEffects(),
66
+
67
+ // Unreal providers (adds feature state and effects internally)
68
+ ...provideAngularUnrealModule(),
69
+
70
+ // Optional initial config
71
+ {
72
+ provide: UNREAL_CONFIG,
73
+ useValue: {
74
+ // customErrorsEndpoint?: string,
75
+ // commandTelemetryReceiver?: string,
76
+ // regionsPingUrl?: string,
77
+ // screenLockerContainerId?: string,
78
+ // dataChannelConnectionTimeout?: number,
79
+ },
80
+ },
81
+ ],
82
+ };
83
+ ```
84
+
85
+ ### 2) Use the Unreal scene component
86
+
87
+ Import the component into a standalone component and use it in the template.
88
+
89
+ ```ts
90
+ import { Component } from '@angular/core';
91
+ import { UnrealSceneComponent } from '@3dsource/angular-unreal-module';
92
+
93
+ @Component({
94
+ selector: 'app-root',
95
+ standalone: true,
96
+ imports: [UnrealSceneComponent],
97
+ template: ` <app-unreal-scene [isStudio]="false" [useContainerAsSizeProvider]="true" [studioResolutionSize]="{ width: 1920, height: 1080 }" (changeMouseOverScene)="onHover($event)"></app-unreal-scene> `,
98
+ })
99
+ export class AppComponent {
100
+ onHover(isOver: boolean) {
101
+ // handle mouse over scene
102
+ }
103
+ }
104
+ ```
105
+
106
+ Component selector: <app-unreal-scene>
107
+
108
+ Inputs:
109
+
110
+ - isStudio: boolean = false
111
+ - useContainerAsSizeProvider: boolean = true
112
+ - studioResolutionSize: { width: number; height: number } = { width: 1920, height: 1080 }
113
+
114
+ Outputs:
115
+
116
+ - changeMouseOverScene: EventEmitter<boolean>
117
+
118
+ ### 3) Send commands / interactions to Unreal
119
+
120
+ Use UnrealCommunicatorService to send commands or UI interactions. Types for command packets are provided by @3dsource/types-unreal.
121
+
122
+ ```ts
123
+ import { Component, inject } from '@angular/core';
124
+ import { UnrealCommunicatorService } from '@3dsource/angular-unreal-module';
125
+ import type { MetaBoxCommandPacket } from '@3dsource/types-unreal';
126
+
127
+ @Component({ standalone: true, template: '' })
128
+ export class MyComponent {
129
+ private unreal = inject(UnrealCommunicatorService);
130
+
131
+ sendSomeCommand() {
132
+ const packet: MetaBoxCommandPacket = {
133
+ command: 'SomeCommand',
134
+ parameters: {
135
+ /* command parameters */
136
+ },
137
+ } as MetaBoxCommandPacket;
138
+
139
+ // Records telemetry and dispatches store events
140
+ this.unreal.sendCommandToUnreal(packet);
141
+ // Or use:
142
+ // this.unreal.emitCommand(packet); // to send as Command message
143
+ // this.unreal.emitUIInteraction(packet); // to send as UIInteraction
144
+ }
145
+ }
146
+ ```
147
+
148
+ ## Features
149
+
150
+ - Standalone Unreal Scene Component
151
+ - Command and UI Interaction API via UnrealCommunicatorService
152
+ - Event-driven status UI (freeze frame, video stats, play overlay)
153
+ - NgRx-powered state management and effects
154
+ - Optional initial configuration via UNREAL_CONFIG token
155
+
156
+ ## Examples
157
+
158
+ Check the demo application for complete usage examples:
159
+
160
+ ```shell
161
+ npm run demo:start
162
+ ```