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 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
+ ```
@@ -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
+ }