unreal-toolkit-next 0.1.11 → 0.1.14
Sign up to get free protection for your applications and to get access to all the features.
- package/README.md +36 -2
- package/dist/index.d.ts +24 -20
- package/dist/index.js +98 -43
- package/package.json +1 -1
package/README.md
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
# Unreal Toolkit - Next Edition
|
2
|
-
A
|
2
|
+
A runtime library for advanced Unreal Engine web game development. The **Unreal Toolkit** enables interoperability
|
3
3
|
with your hosted Unreal Engine streaming web application.
|
4
4
|
|
5
5
|
<a href="https://www.npmjs.com/package/unreal-toolkit">Classic Edition (UMD)</a>
|
6
6
|
<br/>
|
7
|
-
<a href="https://github.com/
|
7
|
+
<a href="https://github.com/codewrxai/UnrealToolkit/cdn">Browser Edition (CDN)</a>
|
8
8
|
|
9
9
|
|
10
10
|
## Default Installation (ES6)
|
@@ -16,3 +16,37 @@ npm install unreal-toolkit-next
|
|
16
16
|
```javascript
|
17
17
|
import UnrealToolkit from 'unreal-toolkit';
|
18
18
|
```
|
19
|
+
|
20
|
+
* Unreal Toolkit Message Bus Usage
|
21
|
+
```typescript
|
22
|
+
// Post WM_HELLO message to Unreal Engine
|
23
|
+
UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
|
24
|
+
|
25
|
+
// Handle WM_MY_EVENT message from Unreal Engine
|
26
|
+
UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
|
27
|
+
console.log("My Event Args: ", args);
|
28
|
+
});
|
29
|
+
```
|
30
|
+
|
31
|
+
* Unreal Toolkit Content Frame Style
|
32
|
+
```css
|
33
|
+
iframe {
|
34
|
+
position: absolute;
|
35
|
+
width: 100%;
|
36
|
+
height: 100%;
|
37
|
+
min-height: 100vh;
|
38
|
+
border: none;
|
39
|
+
outline: none;
|
40
|
+
z-index: 0;
|
41
|
+
}
|
42
|
+
```
|
43
|
+
|
44
|
+
* Unreal Toolkit Content Frame Window
|
45
|
+
```html
|
46
|
+
<iframe
|
47
|
+
src="your.unrealtoolkitproject.com"
|
48
|
+
crossorigin="anonymous"
|
49
|
+
allow="cross-origin-isolated"
|
50
|
+
sandbox="allow-same-origin allow-scripts allow-popups allow-forms allow-pointer-lock">
|
51
|
+
</iframe>
|
52
|
+
```
|
package/dist/index.d.ts
CHANGED
@@ -8,13 +8,13 @@ export declare class UnrealToolkit {
|
|
8
8
|
/** Unreal Toolkit event message bus
|
9
9
|
* @example
|
10
10
|
* ```typescript
|
11
|
-
* //
|
12
|
-
* UnrealToolkit.EventBus.
|
13
|
-
* console.log("My Event Data: " + data);
|
14
|
-
* });
|
11
|
+
* // Post WM_HELLO message to Unreal Engine
|
12
|
+
* UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
|
15
13
|
*
|
16
|
-
* //
|
17
|
-
* UnrealToolkit.EventBus.
|
14
|
+
* // Handle WM_MY_EVENT message from Unreal Engine
|
15
|
+
* UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
|
16
|
+
* console.log("My Event Args: ", args);
|
17
|
+
* });
|
18
18
|
* ```
|
19
19
|
*/
|
20
20
|
static get EventBus(): UnrealMessageBus;
|
@@ -24,28 +24,28 @@ export declare class UnrealToolkit {
|
|
24
24
|
* @class UnrealMessageBus - All rights reserved (c) 2024 Mackey Kinard
|
25
25
|
*/
|
26
26
|
export declare class UnrealMessageBus {
|
27
|
-
|
27
|
+
static AllowedOrigin: string;
|
28
|
+
static TargetOrigin: string;
|
29
|
+
static ContentFrames: NodeListOf<HTMLIFrameElement>;
|
28
30
|
constructor();
|
29
|
-
/**
|
30
|
-
* @param
|
31
|
-
* @param
|
31
|
+
/** Post event bus message
|
32
|
+
* @param name The message to post
|
33
|
+
* @param args The args to post
|
32
34
|
* @returns void
|
33
35
|
*/
|
34
|
-
|
35
|
-
/**
|
36
|
-
* @param
|
37
|
-
* @param
|
38
|
-
* @param target The target to post
|
39
|
-
* @param transfer The transfer to post
|
36
|
+
PostWindowMessage(name: string, args?: string[]): void;
|
37
|
+
/** Handle event bus message
|
38
|
+
* @param name The name to handle
|
39
|
+
* @param args The args to handle
|
40
40
|
* @returns void
|
41
41
|
*/
|
42
|
-
|
42
|
+
OnWindowMessage(name: string, handler: (args: string[]) => void): void;
|
43
43
|
/** Remove event bus message handler
|
44
44
|
* @param message The message to remove
|
45
45
|
* @param handler The handler to remove
|
46
46
|
* @returns void
|
47
47
|
*/
|
48
|
-
RemoveHandler(message: string, handler: (
|
48
|
+
RemoveHandler(message: string, handler: (args: string[]) => void): void;
|
49
49
|
/** Clear and reset all event bus message handlers
|
50
50
|
* @returns void
|
51
51
|
*/
|
@@ -54,14 +54,18 @@ export declare class UnrealMessageBus {
|
|
54
54
|
* @returns void
|
55
55
|
*/
|
56
56
|
Dispose(): void;
|
57
|
+
/** Resets the content frame list
|
58
|
+
* @returns void
|
59
|
+
*/
|
60
|
+
ResetContentFrames(): void;
|
57
61
|
/** Handle window message event
|
58
62
|
* @param event The message event to handle
|
59
63
|
* @returns void
|
60
64
|
*/
|
61
65
|
private HandleWindowMessage;
|
62
66
|
/** Dispatch internal event bus message
|
63
|
-
* @param
|
64
|
-
* @param
|
67
|
+
* @param name The name to dispatch
|
68
|
+
* @param args The args to dispatch
|
65
69
|
* @returns void
|
66
70
|
*/
|
67
71
|
private OnDispatchMessage;
|
package/dist/index.js
CHANGED
@@ -7,13 +7,13 @@ export class UnrealToolkit {
|
|
7
7
|
/** Unreal Toolkit event message bus
|
8
8
|
* @example
|
9
9
|
* ```typescript
|
10
|
-
* //
|
11
|
-
* UnrealToolkit.EventBus.
|
12
|
-
* console.log("My Event Data: " + data);
|
13
|
-
* });
|
10
|
+
* // Post WM_HELLO message to Unreal Engine
|
11
|
+
* UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
|
14
12
|
*
|
15
|
-
* //
|
16
|
-
* UnrealToolkit.EventBus.
|
13
|
+
* // Handle WM_MY_EVENT message from Unreal Engine
|
14
|
+
* UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
|
15
|
+
* console.log("My Event Args: ", args);
|
16
|
+
* });
|
17
17
|
* ```
|
18
18
|
*/
|
19
19
|
static get EventBus() {
|
@@ -29,47 +29,57 @@ UnrealToolkit._EventBus = null;
|
|
29
29
|
*/
|
30
30
|
export class UnrealMessageBus {
|
31
31
|
constructor() {
|
32
|
-
this.RequiredOrigin = "*";
|
33
32
|
this.ListenerDictionary = {};
|
34
|
-
|
35
|
-
|
36
|
-
|
33
|
+
this.HandleWindowMessage = this.HandleWindowMessage.bind(this);
|
34
|
+
window.addEventListener("message", this.HandleWindowMessage);
|
35
|
+
}
|
36
|
+
/** Post event bus message
|
37
|
+
* @param name The message to post
|
38
|
+
* @param args The args to post
|
39
|
+
* @returns void
|
40
|
+
*/
|
41
|
+
PostWindowMessage(name, args) {
|
42
|
+
try {
|
43
|
+
if (UnrealMessageBus.ContentFrames == null) {
|
44
|
+
UnrealMessageBus.ContentFrames = document.querySelectorAll("iframe");
|
45
|
+
}
|
46
|
+
if (UnrealMessageBus.ContentFrames != null) {
|
47
|
+
UnrealMessageBus.ContentFrames.forEach((frame) => {
|
48
|
+
var _a;
|
49
|
+
try {
|
50
|
+
(_a = frame.contentWindow) === null || _a === void 0 ? void 0 : _a.postMessage({ source: "unrealtoolkit", message: name, args: args }, UnrealMessageBus.TargetOrigin);
|
51
|
+
}
|
52
|
+
catch (e) {
|
53
|
+
console.warn(e);
|
54
|
+
}
|
55
|
+
});
|
56
|
+
}
|
57
|
+
else {
|
58
|
+
console.warn("UnrealMessageBus: No Content Frames Found!");
|
59
|
+
}
|
37
60
|
}
|
38
|
-
|
39
|
-
console.warn(
|
61
|
+
catch (e) {
|
62
|
+
console.warn(e);
|
40
63
|
}
|
41
64
|
}
|
42
65
|
/** Handle event bus message
|
43
|
-
* @param
|
44
|
-
* @param
|
66
|
+
* @param name The name to handle
|
67
|
+
* @param args The args to handle
|
45
68
|
* @returns void
|
46
69
|
*/
|
47
|
-
|
70
|
+
OnWindowMessage(name, handler) {
|
48
71
|
let listeners;
|
49
|
-
if (this.ListenerDictionary[
|
72
|
+
if (this.ListenerDictionary[name] == null) {
|
50
73
|
listeners = [];
|
51
|
-
this.ListenerDictionary[
|
74
|
+
this.ListenerDictionary[name] = listeners;
|
52
75
|
}
|
53
76
|
else {
|
54
|
-
listeners = this.ListenerDictionary[
|
77
|
+
listeners = this.ListenerDictionary[name];
|
55
78
|
}
|
56
79
|
const index = listeners.findIndex((e) => { return handler == e; });
|
57
80
|
if (index < 0)
|
58
81
|
listeners.push(handler);
|
59
82
|
}
|
60
|
-
/** Post event bus message
|
61
|
-
* @param message The message to post
|
62
|
-
* @param data The data to post
|
63
|
-
* @param target The target to post
|
64
|
-
* @param transfer The transfer to post
|
65
|
-
* @returns void
|
66
|
-
*/
|
67
|
-
PostMessage(message, data, targetOrigin = "*") {
|
68
|
-
if (window && window.top)
|
69
|
-
window.top.postMessage({ source: "unrealmessagebus", message: message, data: data }, targetOrigin);
|
70
|
-
else
|
71
|
-
console.warn("UnrealMessageBus: No Top Window Available");
|
72
|
-
}
|
73
83
|
/** Remove event bus message handler
|
74
84
|
* @param message The message to remove
|
75
85
|
* @param handler The handler to remove
|
@@ -94,41 +104,86 @@ export class UnrealMessageBus {
|
|
94
104
|
*/
|
95
105
|
Dispose() {
|
96
106
|
this.ResetHandlers();
|
97
|
-
|
98
|
-
|
107
|
+
window.removeEventListener("message", this.HandleWindowMessage);
|
108
|
+
}
|
109
|
+
/** Resets the content frame list
|
110
|
+
* @returns void
|
111
|
+
*/
|
112
|
+
ResetContentFrames() {
|
113
|
+
UnrealMessageBus.ContentFrames = null;
|
99
114
|
}
|
100
115
|
/** Handle window message event
|
101
116
|
* @param event The message event to handle
|
102
117
|
* @returns void
|
103
118
|
*/
|
104
119
|
HandleWindowMessage(event) {
|
105
|
-
if (event == null || event.data == null)
|
120
|
+
if (event == null || event.origin == null || event.data == null)
|
106
121
|
return;
|
107
|
-
|
108
|
-
|
122
|
+
if (UnrealMessageBus.AllowedOrigin != null && UnrealMessageBus.AllowedOrigin !== "" && UnrealMessageBus.AllowedOrigin !== "*" && event.origin !== UnrealMessageBus.AllowedOrigin) {
|
123
|
+
console.warn("UnrealMessageBus: Invalid Origin: " + event.origin);
|
109
124
|
return;
|
110
|
-
|
111
|
-
|
125
|
+
}
|
126
|
+
var postMessage = null;
|
127
|
+
var postArguments = null;
|
128
|
+
if (event.data.type != null) {
|
129
|
+
if (event.data.type === "progress" && event.data.value != null) {
|
130
|
+
postMessage = "WM_PROGRESS";
|
131
|
+
postArguments = [event.data.value.toString()];
|
132
|
+
}
|
133
|
+
else if (event.data.type === "LoadComplete") {
|
134
|
+
postMessage = "WM_LOAD_COMPLETE";
|
135
|
+
postArguments = null;
|
136
|
+
}
|
137
|
+
else if (event.data.type === "focus") {
|
138
|
+
postMessage = "WM_FOCUS";
|
139
|
+
postArguments = null;
|
140
|
+
}
|
141
|
+
else if (event.data.type === "blur") {
|
142
|
+
postMessage = "WM_BLUR";
|
143
|
+
postArguments = null;
|
144
|
+
}
|
145
|
+
else if (event.data.type === "pointer-lock-active") {
|
146
|
+
postMessage = "WM_POINTER_LOCK_ACTIVE";
|
147
|
+
postArguments = null;
|
148
|
+
}
|
149
|
+
else if (event.data.type === "pointer-lock-inactive") {
|
150
|
+
postMessage = "WM_POINTER_LOCK_INACTIVE";
|
151
|
+
postArguments = null;
|
152
|
+
}
|
153
|
+
}
|
154
|
+
else if (event.data.source != null && event.data.source === "unrealtoolkit" && event.data.message != null) {
|
155
|
+
postMessage = event.data.message;
|
156
|
+
postArguments = (event.data.args != null) ? event.data.args : null;
|
157
|
+
}
|
158
|
+
try {
|
159
|
+
if (postMessage != null)
|
160
|
+
this.OnDispatchMessage(postMessage, postArguments);
|
161
|
+
}
|
162
|
+
catch (e) {
|
163
|
+
console.warn(e);
|
112
164
|
}
|
113
165
|
}
|
114
166
|
/** Dispatch internal event bus message
|
115
|
-
* @param
|
116
|
-
* @param
|
167
|
+
* @param name The name to dispatch
|
168
|
+
* @param args The args to dispatch
|
117
169
|
* @returns void
|
118
170
|
*/
|
119
|
-
OnDispatchMessage(
|
120
|
-
const listeners = this.ListenerDictionary[
|
171
|
+
OnDispatchMessage(name, args = null) {
|
172
|
+
const listeners = this.ListenerDictionary[name];
|
121
173
|
if (listeners == null)
|
122
174
|
return;
|
123
175
|
listeners.forEach((listener) => { try {
|
124
176
|
if (listener)
|
125
|
-
listener(
|
177
|
+
listener(args);
|
126
178
|
}
|
127
179
|
catch (e) {
|
128
180
|
console.warn(e);
|
129
181
|
} });
|
130
182
|
}
|
131
183
|
}
|
184
|
+
UnrealMessageBus.AllowedOrigin = "*";
|
185
|
+
UnrealMessageBus.TargetOrigin = "*";
|
186
|
+
UnrealMessageBus.ContentFrames = null;
|
132
187
|
/** Unreal Toolkit Runtime Module */
|
133
188
|
console.log("Unreal Toolkit Runtime - Version 0.1.8");
|
134
189
|
export default UnrealToolkit;
|