@3dsource/angular-unreal-module 0.0.43 → 0.0.46

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,107 +1,163 @@
1
- # @3dsource/angular-unreal-module
2
-
3
- A standalone Angular component for integrating Unreal Engine scenes into web applications. This module facilitates
4
- communication between Angular applications and Unreal Engine, enabling interactive 3D experiences.
5
-
6
- ## Overview
7
-
8
- The Angular Unreal Module provides:
9
-
10
- - Seamless integration of Unreal Engine content in Angular applications
11
- - Communication bridge between Angular and Unreal Engine
12
- - State management for 3D scene interactions
13
- - Configurators for customizing Unreal Engine applications
14
-
15
- ## Installation
16
-
17
- ### Prerequisites
18
-
19
- - Angular 19+
20
- - NgRx store and effects
21
-
22
- ### Peer Dependencies
23
-
24
- This library requires the following peer dependencies:
25
-
26
- ```json
27
- {
28
- "@3dsource/source-ui-native": "^1.0.7",
29
- "@3dsource/types-unreal": "^0.0.1",
30
- "@3dsource/utils": "^1.0.13",
31
- "@angular/cdk": "^19.2.0",
32
- "@angular/common": "^19.2.0",
33
- "@angular/core": "^19.2.0",
34
- "@angular/forms": "^19.2.0",
35
- "@ngrx/effects": "^19.1.0",
36
- "@ngrx/operators": "^19.1.0",
37
- "@ngrx/store": "^19.1.0"
38
- }
39
- ```
40
-
41
- ### Library Installation
42
-
43
- ```shell
44
- npm i @3dsource/angular-unreal-module
45
- ```
46
-
47
- ## Usage
48
-
49
- ### Basic Integration
50
-
51
- 1. Import the UnrealModule in your Angular application:
52
-
53
- ```typescript
54
- import { UnrealModule } from '@3dsource/angular-unreal-module';
55
-
56
- @NgModule({
57
- imports: [
58
- UnrealModule.forRoot({
59
- // Configuration options
60
- }),
61
- ],
62
- })
63
- export class AppModule {}
64
- ```
65
-
66
- 2. Use the Unreal scene component in your templates:
67
-
68
- ```html
69
- <unreal-scene [config]="unrealConfig" (sceneReady)="onSceneReady($event)"> </unreal-scene>
70
- ```
71
-
72
- ### Communication with Unreal Engine
73
-
74
- The module provides services for sending commands to and receiving events from Unreal Engine:
75
-
76
- ```typescript
77
- import { UnrealService } from '@3dsource/angular-unreal-module';
78
-
79
- @Component({ ... })
80
- export class MyComponent {
81
- constructor(private unrealService: UnrealService) {
82
- }
83
-
84
- sendCommand() {
85
- this.unrealService.sendCommand({
86
- command: 'SomeCommand',
87
- parameters: { /* command parameters */ }
88
- });
89
- }
90
- }
91
- ```
92
-
93
- ## Features
94
-
95
- - **Unreal Scene Component**: Embed Unreal Engine content in Angular applications
96
- - **Command API**: Send commands to Unreal Engine
97
- - **Event Handling**: React to events from Unreal Engine
98
- - **State Management**: NgRx integration for managing 3D scene state
99
- - **Configuration Options**: Customize the Unreal Engine integration
100
-
101
- ## Examples
102
-
103
- Check the demo application for complete usage examples:
104
-
105
- ```shell
106
- npm run demo:start
107
- ```
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
+ { provide: UNREAL_CONFIG, useValue: {
72
+ // customErrorsEndpoint?: string,
73
+ // commandTelemetryReceiver?: string,
74
+ // regionsPingUrl?: string,
75
+ // screenLockerContainerId?: string,
76
+ // dataChannelConnectionTimeout?: number,
77
+ }
78
+ },
79
+ ],
80
+ };
81
+ ```
82
+
83
+ ### 2) Use the Unreal scene component
84
+
85
+ Import the component into a standalone component and use it in the template.
86
+
87
+ ```ts
88
+ import { Component } from '@angular/core';
89
+ import { UnrealSceneComponent } from '@3dsource/angular-unreal-module';
90
+
91
+ @Component({
92
+ selector: 'app-root',
93
+ standalone: true,
94
+ imports: [UnrealSceneComponent],
95
+ template: `
96
+ <app-unreal-scene
97
+ [isStudio]="false"
98
+ [useContainerAsSizeProvider]="true"
99
+ [studioResolutionSize]="{ width: 1920, height: 1080 }"
100
+ (changeMouseOverScene)="onHover($event)"
101
+ ></app-unreal-scene>
102
+ `,
103
+ })
104
+ export class AppComponent {
105
+ onHover(isOver: boolean) {
106
+ // handle mouse over scene
107
+ }
108
+ }
109
+ ```
110
+
111
+ Component selector: <app-unreal-scene>
112
+
113
+ Inputs:
114
+ - isStudio: boolean = false
115
+ - useContainerAsSizeProvider: boolean = true
116
+ - studioResolutionSize: { width: number; height: number } = { width: 1920, height: 1080 }
117
+
118
+ Outputs:
119
+ - changeMouseOverScene: EventEmitter<boolean>
120
+
121
+ ### 3) Send commands / interactions to Unreal
122
+
123
+ Use UnrealCommunicatorService to send commands or UI interactions. Types for command packets are provided by @3dsource/types-unreal.
124
+
125
+ ```ts
126
+ import { Component, inject } from '@angular/core';
127
+ import { UnrealCommunicatorService } from '@3dsource/angular-unreal-module';
128
+ import type { MetaBoxCommandPacket } from '@3dsource/types-unreal';
129
+
130
+ @Component({ standalone: true, template: '' })
131
+ export class MyComponent {
132
+ private unreal = inject(UnrealCommunicatorService);
133
+
134
+ sendSomeCommand() {
135
+ const packet: MetaBoxCommandPacket = {
136
+ command: 'SomeCommand',
137
+ parameters: { /* command parameters */ },
138
+ } as MetaBoxCommandPacket;
139
+
140
+ // Records telemetry and dispatches store events
141
+ this.unreal.sendCommandToUnreal(packet);
142
+ // Or use:
143
+ // this.unreal.emitCommand(packet); // to send as Command message
144
+ // this.unreal.emitUIInteraction(packet); // to send as UIInteraction
145
+ }
146
+ }
147
+ ```
148
+
149
+ ## Features
150
+
151
+ - Standalone Unreal Scene Component
152
+ - Command and UI Interaction API via UnrealCommunicatorService
153
+ - Event-driven status UI (freeze frame, video stats, play overlay)
154
+ - NgRx-powered state management and effects
155
+ - Optional initial configuration via UNREAL_CONFIG token
156
+
157
+ ## Examples
158
+
159
+ Check the demo application for complete usage examples:
160
+
161
+ ```shell
162
+ npm run demo:start
163
+ ```