unreal-toolkit-next 0.1.12 → 0.1.14

Sign up to get free protection for your applications and to get access to all the features.
package/README.md CHANGED
@@ -1,10 +1,10 @@
1
1
  # Unreal Toolkit - Next Edition
2
- A universal runtime library for advanced Unreal Engine web game development. The **Unreal Toolkit** enables interoperability
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/MackeyK24/UnrealToolkit/tree/master/Runtime">Browser Edition (CDN)</a>
7
+ <a href="https://github.com/codewrxai/UnrealToolkit/cdn">Browser Edition (CDN)</a>
8
8
 
9
9
 
10
10
  ## Default Installation (ES6)
@@ -19,11 +19,34 @@ import UnrealToolkit from 'unreal-toolkit';
19
19
 
20
20
  * Unreal Toolkit Message Bus Usage
21
21
  ```typescript
22
- // Post window message
23
- UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
22
+ // Post WM_HELLO message to Unreal Engine
23
+ UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
24
24
 
25
- // Handle window message
26
- UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
25
+ // Handle WM_MY_EVENT message from Unreal Engine
26
+ UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
27
27
  console.log("My Event Args: ", args);
28
28
  });
29
- ```
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,11 +8,11 @@ export declare class UnrealToolkit {
8
8
  /** Unreal Toolkit event message bus
9
9
  * @example
10
10
  * ```typescript
11
- * // Post myevent window message
12
- * UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
11
+ * // Post WM_HELLO message to Unreal Engine
12
+ * UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
13
13
  *
14
- * // Handle myevent window message
15
- * UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
14
+ * // Handle WM_MY_EVENT message from Unreal Engine
15
+ * UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
16
16
  * console.log("My Event Args: ", args);
17
17
  * });
18
18
  * ```
@@ -26,6 +26,7 @@ export declare class UnrealToolkit {
26
26
  export declare class UnrealMessageBus {
27
27
  static AllowedOrigin: string;
28
28
  static TargetOrigin: string;
29
+ static ContentFrames: NodeListOf<HTMLIFrameElement>;
29
30
  constructor();
30
31
  /** Post event bus message
31
32
  * @param name The message to post
@@ -53,6 +54,10 @@ export declare class UnrealMessageBus {
53
54
  * @returns void
54
55
  */
55
56
  Dispose(): void;
57
+ /** Resets the content frame list
58
+ * @returns void
59
+ */
60
+ ResetContentFrames(): void;
56
61
  /** Handle window message event
57
62
  * @param event The message event to handle
58
63
  * @returns void
package/dist/index.js CHANGED
@@ -7,11 +7,11 @@ export class UnrealToolkit {
7
7
  /** Unreal Toolkit event message bus
8
8
  * @example
9
9
  * ```typescript
10
- * // Post myevent window message
11
- * UnrealToolkit.EventBus.PostWindowMessage("myevent", ["Hello World!"]);
10
+ * // Post WM_HELLO message to Unreal Engine
11
+ * UnrealToolkit.EventBus.PostWindowMessage("WM_HELLO", ["Hello World!"]);
12
12
  *
13
- * // Handle myevent window message
14
- * UnrealToolkit.EventBus.OnWindowMessage("myevent", (args:string[]) => {
13
+ * // Handle WM_MY_EVENT message from Unreal Engine
14
+ * UnrealToolkit.EventBus.OnWindowMessage("WM_MY_EVENT", (args:string[]) => {
15
15
  * console.log("My Event Args: ", args);
16
16
  * });
17
17
  * ```
@@ -31,7 +31,7 @@ export class UnrealMessageBus {
31
31
  constructor() {
32
32
  this.ListenerDictionary = {};
33
33
  this.HandleWindowMessage = this.HandleWindowMessage.bind(this);
34
- window.top.addEventListener("message", this.HandleWindowMessage);
34
+ window.addEventListener("message", this.HandleWindowMessage);
35
35
  }
36
36
  /** Post event bus message
37
37
  * @param name The message to post
@@ -40,7 +40,23 @@ export class UnrealMessageBus {
40
40
  */
41
41
  PostWindowMessage(name, args) {
42
42
  try {
43
- window.top.postMessage({ source: "unrealtoolkit", message: name, args: args }, UnrealMessageBus.TargetOrigin);
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
+ }
44
60
  }
45
61
  catch (e) {
46
62
  console.warn(e);
@@ -88,21 +104,60 @@ export class UnrealMessageBus {
88
104
  */
89
105
  Dispose() {
90
106
  this.ResetHandlers();
91
- window.top.removeEventListener("message", this.HandleWindowMessage);
107
+ window.removeEventListener("message", this.HandleWindowMessage);
108
+ }
109
+ /** Resets the content frame list
110
+ * @returns void
111
+ */
112
+ ResetContentFrames() {
113
+ UnrealMessageBus.ContentFrames = null;
92
114
  }
93
115
  /** Handle window message event
94
116
  * @param event The message event to handle
95
117
  * @returns void
96
118
  */
97
119
  HandleWindowMessage(event) {
98
- if (event == null || event.origin == null || event.data == null || event.data.source == null || event.data.message == null)
120
+ if (event == null || event.origin == null || event.data == null)
99
121
  return;
100
- try {
101
- if (UnrealMessageBus.AllowedOrigin != null && UnrealMessageBus.AllowedOrigin !== "" && UnrealMessageBus.AllowedOrigin !== "*" && event.origin !== UnrealMessageBus.AllowedOrigin) {
102
- console.warn("UnrealMessageBus: Invalid Origin: " + event.origin);
103
- return;
122
+ if (UnrealMessageBus.AllowedOrigin != null && UnrealMessageBus.AllowedOrigin !== "" && UnrealMessageBus.AllowedOrigin !== "*" && event.origin !== UnrealMessageBus.AllowedOrigin) {
123
+ console.warn("UnrealMessageBus: Invalid Origin: " + event.origin);
124
+ return;
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()];
104
132
  }
105
- this.OnDispatchMessage(event.data.message, (event.data.args != null) ? event.data.args : null);
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);
106
161
  }
107
162
  catch (e) {
108
163
  console.warn(e);
@@ -128,6 +183,7 @@ export class UnrealMessageBus {
128
183
  }
129
184
  UnrealMessageBus.AllowedOrigin = "*";
130
185
  UnrealMessageBus.TargetOrigin = "*";
186
+ UnrealMessageBus.ContentFrames = null;
131
187
  /** Unreal Toolkit Runtime Module */
132
188
  console.log("Unreal Toolkit Runtime - Version 0.1.8");
133
189
  export default UnrealToolkit;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unreal-toolkit-next",
3
- "version": "0.1.12",
3
+ "version": "0.1.14",
4
4
  "description": "Unreal Toolkit Runtime Library (ES6)",
5
5
  "module": "dist/index.js",
6
6
  "types": "dist/index.d.ts",