unreal-toolkit-next 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
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
+ }