unreal-toolkit-next 0.0.1
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/README.md +18 -0
- package/dist/index.d.ts +69 -0
- package/dist/index.js +131 -0
- package/package.json +35 -0
package/README.md
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# Unreal Toolkit - Next Edition
|
|
2
|
+
A universal runtime library for advanced Unreal Engine web game development. The **Unreal Toolkit** requires
|
|
3
|
+
the **TOOLKIT** namespaces to be globally accessible.
|
|
4
|
+
|
|
5
|
+
<a href="https://www.npmjs.com/package/unreal-toolkit">Classic Edition (UMD)</a>
|
|
6
|
+
<br/>
|
|
7
|
+
<a href="https://github.com/UnrealJS/UnrealToolkit/tree/master/Runtime">Browser Edition (CDN)</a>
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
## Default Installation (ES6)
|
|
11
|
+
```bash
|
|
12
|
+
npm install unreal-toolkit-next
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
* Default Toolkit Import Libraries
|
|
16
|
+
```javascript
|
|
17
|
+
import TOOLKIT from 'unreal-toolkit';
|
|
18
|
+
```
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/** ES6 Module Imports */
|
|
2
|
+
/**
|
|
3
|
+
* Unreal Toolkit (Static Manager Pattern)
|
|
4
|
+
* @class UnrealToolkit - All rights reserved (c) 2024 Mackey Kinard
|
|
5
|
+
*/
|
|
6
|
+
export declare class UnrealToolkit {
|
|
7
|
+
private static _EventBus;
|
|
8
|
+
/** Unreal Toolkit event message bus
|
|
9
|
+
* @example
|
|
10
|
+
* ```typescript
|
|
11
|
+
* // Handle myevent message
|
|
12
|
+
* UnrealToolkit.EventBus.OnMessage("myevent", (data:string) => {
|
|
13
|
+
* console.log("My Event Data: " + data);
|
|
14
|
+
* });
|
|
15
|
+
*
|
|
16
|
+
* // Post myevent message
|
|
17
|
+
* UnrealToolkit.EventBus.PostMessage("myevent", "Hello World!");
|
|
18
|
+
* ```
|
|
19
|
+
*/
|
|
20
|
+
static get EventBus(): UnrealMessageBus;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Unreal Toolkit Message Bus (Asynchronous Post Message Communication)
|
|
24
|
+
* @class UnrealMessageBus - All rights reserved (c) 2024 Mackey Kinard
|
|
25
|
+
*/
|
|
26
|
+
export declare class UnrealMessageBus {
|
|
27
|
+
constructor();
|
|
28
|
+
/** Handle event bus message
|
|
29
|
+
* @param message The message to handle
|
|
30
|
+
* @param data The data to handle
|
|
31
|
+
* @returns void
|
|
32
|
+
*/
|
|
33
|
+
OnMessage(message: string, handler: (data: string) => void): void;
|
|
34
|
+
/** Post event bus message
|
|
35
|
+
* @param message The message to post
|
|
36
|
+
* @param data The data to post
|
|
37
|
+
* @param target The target to post
|
|
38
|
+
* @param transfer The transfer to post
|
|
39
|
+
* @returns void
|
|
40
|
+
*/
|
|
41
|
+
PostMessage(message: string, data?: string): void;
|
|
42
|
+
/** Remove event bus message handler
|
|
43
|
+
* @param message The message to remove
|
|
44
|
+
* @param handler The handler to remove
|
|
45
|
+
* @returns void
|
|
46
|
+
*/
|
|
47
|
+
RemoveHandler(message: string, handler: (data: string) => void): void;
|
|
48
|
+
/** Clear and reset all event bus message handlers
|
|
49
|
+
* @returns void
|
|
50
|
+
*/
|
|
51
|
+
ResetHandlers(): void;
|
|
52
|
+
/** Dispose the unreal message bus
|
|
53
|
+
* @returns void
|
|
54
|
+
*/
|
|
55
|
+
Dispose(): void;
|
|
56
|
+
/** Handle window message event
|
|
57
|
+
* @param event The message event to handle
|
|
58
|
+
* @returns void
|
|
59
|
+
*/
|
|
60
|
+
private HandleWindowMessage;
|
|
61
|
+
/** Dispatch internal event bus message
|
|
62
|
+
* @param message The message to dispatch
|
|
63
|
+
* @param data The data to dispatch
|
|
64
|
+
* @returns void
|
|
65
|
+
*/
|
|
66
|
+
private OnDispatchMessage;
|
|
67
|
+
private ListenerDictionary;
|
|
68
|
+
}
|
|
69
|
+
export default UnrealToolkit;
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
/** ES6 Module Imports */
|
|
2
|
+
/**
|
|
3
|
+
* Unreal Toolkit (Static Manager Pattern)
|
|
4
|
+
* @class UnrealToolkit - All rights reserved (c) 2024 Mackey Kinard
|
|
5
|
+
*/
|
|
6
|
+
export class UnrealToolkit {
|
|
7
|
+
/** Unreal Toolkit event message bus
|
|
8
|
+
* @example
|
|
9
|
+
* ```typescript
|
|
10
|
+
* // Handle myevent message
|
|
11
|
+
* UnrealToolkit.EventBus.OnMessage("myevent", (data:string) => {
|
|
12
|
+
* console.log("My Event Data: " + data);
|
|
13
|
+
* });
|
|
14
|
+
*
|
|
15
|
+
* // Post myevent message
|
|
16
|
+
* UnrealToolkit.EventBus.PostMessage("myevent", "Hello World!");
|
|
17
|
+
* ```
|
|
18
|
+
*/
|
|
19
|
+
static get EventBus() {
|
|
20
|
+
if (UnrealToolkit._EventBus == null)
|
|
21
|
+
UnrealToolkit._EventBus = new UnrealMessageBus();
|
|
22
|
+
return UnrealToolkit._EventBus;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
UnrealToolkit._EventBus = null;
|
|
26
|
+
/**
|
|
27
|
+
* Unreal Toolkit Message Bus (Asynchronous Post Message Communication)
|
|
28
|
+
* @class UnrealMessageBus - All rights reserved (c) 2024 Mackey Kinard
|
|
29
|
+
*/
|
|
30
|
+
export class UnrealMessageBus {
|
|
31
|
+
constructor() {
|
|
32
|
+
this.ListenerDictionary = {};
|
|
33
|
+
if (window && window.top) {
|
|
34
|
+
this.HandleWindowMessage = this.HandleWindowMessage.bind(this);
|
|
35
|
+
window.top.addEventListener("message", this.HandleWindowMessage);
|
|
36
|
+
}
|
|
37
|
+
else {
|
|
38
|
+
console.warn("UnrealMessageBus: No Top Window Available");
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
/** Handle event bus message
|
|
42
|
+
* @param message The message to handle
|
|
43
|
+
* @param data The data to handle
|
|
44
|
+
* @returns void
|
|
45
|
+
*/
|
|
46
|
+
OnMessage(message, handler) {
|
|
47
|
+
let listeners;
|
|
48
|
+
if (this.ListenerDictionary[message] == null) {
|
|
49
|
+
listeners = [];
|
|
50
|
+
this.ListenerDictionary[message] = listeners;
|
|
51
|
+
}
|
|
52
|
+
else {
|
|
53
|
+
listeners = this.ListenerDictionary[message];
|
|
54
|
+
}
|
|
55
|
+
const index = listeners.findIndex((e) => { return handler == e; });
|
|
56
|
+
if (index < 0)
|
|
57
|
+
listeners.push(handler);
|
|
58
|
+
}
|
|
59
|
+
/** Post event bus message
|
|
60
|
+
* @param message The message to post
|
|
61
|
+
* @param data The data to post
|
|
62
|
+
* @param target The target to post
|
|
63
|
+
* @param transfer The transfer to post
|
|
64
|
+
* @returns void
|
|
65
|
+
*/
|
|
66
|
+
PostMessage(message, data) {
|
|
67
|
+
if (window && window.top)
|
|
68
|
+
window.top.postMessage({ source: "unrealmessagebus", message: message, data: data });
|
|
69
|
+
else
|
|
70
|
+
console.warn("UnrealMessageBus: No Top Window Available");
|
|
71
|
+
}
|
|
72
|
+
/** Remove event bus message handler
|
|
73
|
+
* @param message The message to remove
|
|
74
|
+
* @param handler The handler to remove
|
|
75
|
+
* @returns void
|
|
76
|
+
*/
|
|
77
|
+
RemoveHandler(message, handler) {
|
|
78
|
+
const listeners = this.ListenerDictionary[message];
|
|
79
|
+
if (listeners == null)
|
|
80
|
+
return;
|
|
81
|
+
const index = listeners.findIndex((e) => { return handler == e; });
|
|
82
|
+
if (index >= 0)
|
|
83
|
+
listeners.splice(index, 1);
|
|
84
|
+
}
|
|
85
|
+
/** Clear and reset all event bus message handlers
|
|
86
|
+
* @returns void
|
|
87
|
+
*/
|
|
88
|
+
ResetHandlers() {
|
|
89
|
+
this.ListenerDictionary = {};
|
|
90
|
+
}
|
|
91
|
+
/** Dispose the unreal message bus
|
|
92
|
+
* @returns void
|
|
93
|
+
*/
|
|
94
|
+
Dispose() {
|
|
95
|
+
this.ResetHandlers();
|
|
96
|
+
if (window && window.top)
|
|
97
|
+
window.top.removeEventListener("message", this.HandleWindowMessage);
|
|
98
|
+
}
|
|
99
|
+
/** Handle window message event
|
|
100
|
+
* @param event The message event to handle
|
|
101
|
+
* @returns void
|
|
102
|
+
*/
|
|
103
|
+
HandleWindowMessage(event) {
|
|
104
|
+
if (event != null && event.data != null && event.data.message != null && event.data.source != null && event.data.source == "unrealmessagebus") {
|
|
105
|
+
this.OnDispatchMessage(event.data.message, (event.data.data != null) ? event.data.data : null);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
/** Dispatch internal event bus message
|
|
109
|
+
* @param message The message to dispatch
|
|
110
|
+
* @param data The data to dispatch
|
|
111
|
+
* @returns void
|
|
112
|
+
*/
|
|
113
|
+
OnDispatchMessage(message, data = null) {
|
|
114
|
+
const listeners = this.ListenerDictionary[message];
|
|
115
|
+
if (listeners == null)
|
|
116
|
+
return;
|
|
117
|
+
listeners.forEach((listener) => { try {
|
|
118
|
+
if (listener)
|
|
119
|
+
listener(data);
|
|
120
|
+
}
|
|
121
|
+
catch (e) {
|
|
122
|
+
console.warn(e);
|
|
123
|
+
} });
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/** Unreal Toolkit Runtime Module */
|
|
127
|
+
if (typeof window !== 'undefined') {
|
|
128
|
+
window.UnrealToolkit = UnrealToolkit;
|
|
129
|
+
}
|
|
130
|
+
console.log("Unreal Toolkit Runtime - Version 0.0.1");
|
|
131
|
+
export default UnrealToolkit;
|
package/package.json
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "unreal-toolkit-next",
|
|
3
|
+
"version": "0.0.1",
|
|
4
|
+
"description": "Unreal Toolkit Runtime Library (ES6)",
|
|
5
|
+
"module": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"scripts": {
|
|
8
|
+
"clean": "rimraf dist",
|
|
9
|
+
"build": "npm run build-all",
|
|
10
|
+
"build-ts": "tsc",
|
|
11
|
+
"build-old": "webpack --mode production",
|
|
12
|
+
"build-all": "npm run clean && npm run build-ts"
|
|
13
|
+
},
|
|
14
|
+
"keywords": [
|
|
15
|
+
"unrealjs",
|
|
16
|
+
"unreal-toolkit",
|
|
17
|
+
"game-development",
|
|
18
|
+
"wasm",
|
|
19
|
+
"webgl",
|
|
20
|
+
"webgpu"
|
|
21
|
+
],
|
|
22
|
+
"files": [
|
|
23
|
+
"README.md",
|
|
24
|
+
"package.json",
|
|
25
|
+
"dist/**/*"
|
|
26
|
+
],
|
|
27
|
+
"devDependencies": {
|
|
28
|
+
"rimraf": "^6.0.1",
|
|
29
|
+
"terser": "^5.31.6",
|
|
30
|
+
"ts-loader": "^9.5.1",
|
|
31
|
+
"typescript": "^5.5.4",
|
|
32
|
+
"webpack": "^5.93.0",
|
|
33
|
+
"webpack-cli": "^5.1.4"
|
|
34
|
+
}
|
|
35
|
+
}
|