Skip to content

Commit abc20db

Browse files
Refactor Application component to simplify Unity integration and remove unused code
1 parent 7ca4496 commit abc20db

File tree

1 file changed

+16
-150
lines changed

1 file changed

+16
-150
lines changed

testing/src/application.tsx

Lines changed: 16 additions & 150 deletions
Original file line numberDiff line numberDiff line change
@@ -1,162 +1,28 @@
1-
import { Fragment, useEffect, useRef, useState } from "react";
2-
import { Unity, useUnityContext } from "react-unity-webgl";
1+
import { Fragment, useState } from "react";
2+
import { Unity, useUnityContext } from "../../module/source/exports";
33

44
export function Application() {
5-
function handleCacheControl(url: string) {
6-
console.log(`Cache control for ${url}`);
7-
return "no-cache";
8-
}
5+
const [isMounted, setIsMounted] = useState(false);
96

10-
const {
11-
loadingProgression,
12-
unityProvider,
13-
isLoaded,
14-
requestFullscreen,
15-
requestPointerLock,
16-
sendMessage,
17-
initialisationError,
18-
addEventListener,
19-
removeEventListener,
20-
takeScreenshot,
21-
unload,
22-
UNSAFE__unityInstance,
23-
} = useUnityContext({
24-
codeUrl: `/unity-build/communication-tests.wasm`,
25-
dataUrl: `/unity-build/communication-tests.data`,
26-
frameworkUrl: `/unity-build/communication-tests.framework.js`,
27-
loaderUrl: `/unity-build/communication-tests.loader.js`,
28-
webglContextAttributes: {
29-
preserveDrawingBuffer: true,
30-
},
31-
cacheControl: handleCacheControl,
7+
const { unityProvider } = useUnityContext({
8+
codeUrl: `/unity-build/unity.wasm`,
9+
dataUrl: `/unity-build/unity.data`,
10+
frameworkUrl: `/unity-build/unity.framework.js`,
11+
loaderUrl: `/unity-build/unity.loader.js`,
3212
});
3313

34-
const canvasRef = useRef<HTMLCanvasElement>(null);
35-
const [screenshots, setScreenshots] = useState<string[]>([]);
36-
const [consoleEntries, setConsoleEntries] = useState<string[]>([]);
37-
const [canvasWidth, setCanvasWidth] = useState(500);
38-
39-
function handleClickRequestFullScreen() {
40-
requestFullscreen(true);
41-
}
42-
43-
function handleClickRequestPointerLock() {
44-
requestPointerLock();
45-
}
46-
47-
function handleClickUnload() {
48-
unload();
49-
}
50-
51-
function handleClickSetRandomCanvasWidth() {
52-
setCanvasWidth(Math.floor(Math.random() * 500) + 250);
53-
}
54-
55-
function handleClickSetLogText() {
56-
sendMessage(
57-
"Persistent",
58-
"SetLogText",
59-
"Hello World, the time is " + new Date().toISOString()
60-
);
61-
}
62-
63-
function handleClickLogCanvasRefToConsole() {
64-
console.log("Canvas Reference", { canvasRef: canvasRef.current });
65-
}
66-
67-
function handleClickLogUnityInstanceRefToConsole() {
68-
console.log("Unity Instance Reference", { UNSAFE__unityInstance });
69-
}
70-
71-
function handleClickTakeScreenshot() {
72-
const screenshot = takeScreenshot("image/jpg", 1);
73-
if (screenshot) {
74-
setScreenshots([...screenshots, screenshot]);
75-
}
76-
}
77-
78-
useEffect(() => {
79-
function logParametersToConsole(...parameters: any[]) {
80-
setConsoleEntries((entries) => [
81-
...entries,
82-
`Event: ${parameters.join(", ")}`,
83-
]);
84-
}
85-
86-
addEventListener("ClickedTestButton", logParametersToConsole);
87-
addEventListener("ClickedStringTestButton", logParametersToConsole);
88-
addEventListener("ClickedNumberTestButton", logParametersToConsole);
89-
addEventListener("ClickedNumbersTestButton", logParametersToConsole);
90-
addEventListener("ClickedBoolTestButton", logParametersToConsole);
91-
addEventListener("ClickedObjectTestButton", logParametersToConsole);
92-
return () => {
93-
removeEventListener("ClickedTestButton", logParametersToConsole);
94-
removeEventListener("ClickedStringTestButton", logParametersToConsole);
95-
removeEventListener("ClickedNumberTestButton", logParametersToConsole);
96-
removeEventListener("ClickedNumbersTestButton", logParametersToConsole);
97-
removeEventListener("ClickedBoolTestButton", logParametersToConsole);
98-
removeEventListener("ClickedObjectTestButton", logParametersToConsole);
99-
};
100-
}, [addEventListener, removeEventListener]);
101-
10214
return (
10315
<Fragment>
10416
<h1>Unity Test</h1>
105-
<h2>State</h2>
106-
Loading progression: <code>{loadingProgression}</code>
107-
<br />
108-
Loaded: <code>{isLoaded ? "YES" : "NO"}</code>
109-
<br />
110-
Error: <code>{initialisationError?.message || "NONE"}</code>
111-
<br />
112-
<h2>Actions</h2>
113-
References:
114-
<button onClick={handleClickLogCanvasRefToConsole}>
115-
Log Canvas Ref to Console
116-
</button>
117-
<button onClick={handleClickLogUnityInstanceRefToConsole}>
118-
(Unsafe) Log Unity Instance Ref to Console
119-
</button>
120-
<br />
121-
Actions:
122-
<button onClick={handleClickRequestFullScreen}>Request Fullscreen</button>
123-
<button onClick={handleClickRequestPointerLock}>
124-
Request Pointer Lock
125-
</button>
126-
<button onClick={handleClickUnload}>Unload</button>
127-
<br />
128-
Screenshots:
129-
<button onClick={handleClickTakeScreenshot}>Take Screenshot</button>
130-
{screenshots.map((screenshot, index) => (
131-
<img key={index} src={screenshot} height={50} alt="Screenshot" />
132-
))}
133-
<br />
134-
Communication:
135-
<button onClick={handleClickSetLogText}>Set Log Text</button>
136-
<br />
137-
Other:
138-
<button onClick={handleClickSetRandomCanvasWidth}>
139-
Set Random Canvas Width
17+
<button onClick={() => setIsMounted((prev) => !prev)}>
18+
{isMounted ? "Unmount Unity" : "Mount Unity"}
14019
</button>
141-
<h2>Unity</h2>
142-
<Unity
143-
unityProvider={unityProvider}
144-
style={{
145-
border: "1px solid red",
146-
height: 400,
147-
width: canvasWidth,
148-
}}
149-
devicePixelRatio={window.devicePixelRatio}
150-
disabledCanvasEvents={["dragstart"]}
151-
ref={canvasRef}
152-
id="my-custom-cancas-id"
153-
/>
154-
<h2>Console</h2>
155-
<code>
156-
{consoleEntries.map((entry, index) => (
157-
<div key={index}>{entry}</div>
158-
))}
159-
</code>
20+
{isMounted && (
21+
<Unity
22+
unityProvider={unityProvider}
23+
style={{ width: 400, height: 250 }}
24+
/>
25+
)}
16026
</Fragment>
16127
);
16228
}

0 commit comments

Comments
 (0)