nova64 0.2.5 → 0.2.6
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 +25 -8
- package/bin/nova64.js +165 -0
- package/dist/assets/console-CY_kygm3.js +14 -0
- package/dist/assets/console-CY_kygm3.js.map +1 -0
- package/dist/assets/main-l0sNRNKZ.js.map +1 -0
- package/dist/assets/sky/studio/nx.png +0 -0
- package/dist/assets/sky/studio/ny.png +0 -0
- package/dist/assets/sky/studio/nz.png +0 -0
- package/dist/assets/sky/studio/px.png +0 -0
- package/dist/assets/sky/studio/py.png +0 -0
- package/dist/assets/sky/studio/pz.png +0 -0
- package/dist/assets/vanilla-Dcuy32gi.js +2 -0
- package/dist/assets/vanilla-Dcuy32gi.js.map +1 -0
- package/dist/console.html +899 -0
- package/dist/docs/BENCHMARK.md +77 -0
- package/dist/docs/CHEATSHEET.md +255 -0
- package/dist/docs/EFFECTS_API_GUIDE.md +577 -0
- package/dist/docs/EFFECTS_QUICK_REFERENCE.md +331 -0
- package/dist/docs/FONT_CHARACTER_REFERENCE.md +219 -0
- package/dist/docs/FREE_GLB_ASSETS.md +330 -0
- package/dist/docs/FULLSCREEN_BUTTON_FEATURE.md +296 -0
- package/dist/docs/GAMEPAD_SUPPORT.md +348 -0
- package/dist/docs/GAME_IMPROVEMENTS.md +278 -0
- package/dist/docs/GAME_QUALITY_STATUS.md +300 -0
- package/dist/docs/MIGRATION_GUIDE.md +553 -0
- package/dist/docs/NOVA64_3D_API.md +356 -0
- package/dist/docs/NOVA64_API_REFERENCE.md +1406 -0
- package/dist/docs/NOVA64_UI_API.md +503 -0
- package/dist/docs/UI_SYSTEM_SUMMARY.md +445 -0
- package/dist/docs/VOXEL_ENGINE_GUIDE.md +662 -0
- package/dist/docs/VOXEL_QUICK_REFERENCE.md +386 -0
- package/dist/docs/api-3d.html +750 -0
- package/dist/docs/api-effects.html +385 -0
- package/dist/docs/api-improvements.md +121 -0
- package/dist/docs/api-skybox.html +407 -0
- package/dist/docs/api-sprites.html +321 -0
- package/dist/docs/api-voxel.html +337 -0
- package/dist/docs/api.html +543 -0
- package/dist/docs/assets.html +306 -0
- package/dist/docs/audio.html +340 -0
- package/dist/docs/blogs.html +286 -0
- package/dist/docs/collision.html +316 -0
- package/dist/docs/console.html +247 -0
- package/dist/docs/editor.html +297 -0
- package/dist/docs/font.html +247 -0
- package/dist/docs/framebuffer.html +247 -0
- package/dist/docs/fullscreen-button.html +297 -0
- package/dist/docs/gpu-systems.html +247 -0
- package/dist/docs/index.html +580 -0
- package/dist/docs/input.html +491 -0
- package/dist/docs/physics.html +311 -0
- package/dist/docs/screens.html +311 -0
- package/dist/docs/storage.html +311 -0
- package/dist/docs/textinput.html +332 -0
- package/dist/docs/ui.html +488 -0
- package/dist/examples/3d-advanced/code.js +695 -0
- package/dist/examples/adventure-comic-3d/code.js +342 -0
- package/dist/examples/audio-lab/code.js +150 -0
- package/dist/examples/boids-flocking/code.js +270 -0
- package/dist/examples/crystal-cathedral-3d/code.js +706 -0
- package/dist/examples/cyberpunk-city-3d/code.js +1383 -0
- package/dist/examples/demoscene/README.md +192 -0
- package/dist/examples/demoscene/code.js +1081 -0
- package/dist/examples/demoscene/meta.json +21 -0
- package/dist/examples/dungeon-crawler-3d/code.js +1117 -0
- package/dist/examples/f-zero-nova-3d/code.js +865 -0
- package/dist/examples/f-zero-nova-3d/code_old.js +1555 -0
- package/dist/examples/fps-demo-3d/code.js +744 -0
- package/dist/examples/game-of-life-3d/code.js +338 -0
- package/dist/examples/generative-art/code.js +632 -0
- package/dist/examples/hello-3d/code.js +325 -0
- package/dist/examples/hello-skybox/code.js +183 -0
- package/dist/examples/hello-world/code.js +19 -0
- package/dist/examples/input-showcase/code.js +109 -0
- package/dist/examples/instancing-demo/code.js +315 -0
- package/dist/examples/minecraft-demo/code.js +387 -0
- package/dist/examples/model-viewer-3d/code.js +114 -0
- package/dist/examples/mystical-realm-3d/code.js +1203 -0
- package/dist/examples/nature-explorer-3d/code.js +1318 -0
- package/dist/examples/particles-demo/code.js +522 -0
- package/dist/examples/pbr-showcase/code.js +140 -0
- package/dist/examples/physics-demo-3d/code.js +948 -0
- package/dist/examples/screen-demo/code.js +267 -0
- package/dist/examples/shooter-demo-3d/code.js +1286 -0
- package/dist/examples/space-combat-3d/IMPLEMENTATION_SUMMARY.md +109 -0
- package/dist/examples/space-combat-3d/README.md +135 -0
- package/dist/examples/space-combat-3d/code.js +1332 -0
- package/dist/examples/space-harrier-3d/code.js +923 -0
- package/dist/examples/star-fox-nova-3d/code.js +1116 -0
- package/dist/examples/star-fox-nova-3d/code_backup.js +410 -0
- package/dist/examples/star-fox-nova-3d/code_broken.js +1821 -0
- package/dist/examples/storage-quest/code.js +209 -0
- package/dist/examples/strider-demo-3d/IMPROVEMENT_OPTIONS.md +285 -0
- package/dist/examples/strider-demo-3d/cache-test.html +132 -0
- package/dist/examples/strider-demo-3d/code-fixed.js +582 -0
- package/dist/examples/strider-demo-3d/code-old.js +1537 -0
- package/dist/examples/strider-demo-3d/code.js +1462 -0
- package/dist/examples/strider-demo-3d/code.js.bak2 +1169 -0
- package/dist/examples/strider-demo-3d/fix-game.sh +53 -0
- package/dist/examples/super-plumber-64/README.md +128 -0
- package/dist/examples/super-plumber-64/code.js +1185 -0
- package/dist/examples/super-plumber-64/index.html +88 -0
- package/dist/examples/test-2d-overlay/code.js +32 -0
- package/dist/examples/test-font/code.js +51 -0
- package/dist/examples/test-minimal/code.js +21 -0
- package/dist/examples/ui-demo/code.js +306 -0
- package/dist/examples/wing-commander-space/README.md +180 -0
- package/dist/examples/wing-commander-space/code.js +1285 -0
- package/dist/examples/wizardry-3d/CHANGELOG.md +366 -0
- package/dist/examples/wizardry-3d/code.js +3928 -0
- package/dist/index.html +666 -0
- package/dist/os9-shell/assets/index-DIHfrTaW.css +1 -0
- package/dist/os9-shell/assets/index-KchE_ngx.js +483 -0
- package/dist/os9-shell/assets/index-KchE_ngx.js.map +1 -0
- package/dist/os9-shell/index.html +23 -0
- package/dist/os9-shell/nova-icon.svg +12 -0
- package/index.html +6 -1
- package/package.json +37 -32
- package/public/assets/sky/studio/nx.png +0 -0
- package/public/assets/sky/studio/ny.png +0 -0
- package/public/assets/sky/studio/nz.png +0 -0
- package/public/assets/sky/studio/px.png +0 -0
- package/public/assets/sky/studio/py.png +0 -0
- package/public/assets/sky/studio/pz.png +0 -0
- package/public/os9-shell/assets/index-KchE_ngx.js +483 -0
- package/public/os9-shell/assets/index-KchE_ngx.js.map +1 -0
- package/public/os9-shell/index.html +10 -1
- package/runtime/api-2d.js +301 -21
- package/runtime/api-3d/pbr.js +45 -1
- package/runtime/api-3d.js +1 -0
- package/runtime/api-effects.js +90 -3
- package/runtime/api-gameutils.js +476 -0
- package/runtime/api-generative.js +610 -0
- package/runtime/api-skybox.js +54 -0
- package/runtime/api-voxel.js +139 -28
- package/runtime/gpu-threejs.js +13 -9
- package/runtime/ui.js +2 -2
- package/src/main.js +20 -0
- package/public/os9-shell/assets/index-B1Uvacma.js +0 -32825
- package/public/os9-shell/assets/index-B1Uvacma.js.map +0 -1
|
@@ -0,0 +1,491 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Input System - Nova64 Documentation</title>
|
|
7
|
+
<style>
|
|
8
|
+
:root {
|
|
9
|
+
--bg-primary: #0f1115;
|
|
10
|
+
--bg-secondary: #151822;
|
|
11
|
+
--bg-tertiary: #1a1d2e;
|
|
12
|
+
--text-primary: #dcdfe4;
|
|
13
|
+
--text-secondary: #99a1b3;
|
|
14
|
+
--accent-cyan: #00ffff;
|
|
15
|
+
--accent-magenta: #ff0080;
|
|
16
|
+
--accent-yellow: #ffff00;
|
|
17
|
+
--border: #2a324a;
|
|
18
|
+
--code-bg: #1a1d2e;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
* {
|
|
22
|
+
margin: 0;
|
|
23
|
+
padding: 0;
|
|
24
|
+
box-sizing: border-box;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
body {
|
|
28
|
+
font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
|
|
29
|
+
background: linear-gradient(135deg, var(--bg-primary) 0%, #1a1625 50%, var(--bg-primary) 100%);
|
|
30
|
+
background-attachment: fixed;
|
|
31
|
+
color: var(--text-primary);
|
|
32
|
+
line-height: 1.6;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.container {
|
|
36
|
+
max-width: 1200px;
|
|
37
|
+
margin: 0 auto;
|
|
38
|
+
padding: 20px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
header {
|
|
42
|
+
background: var(--bg-secondary);
|
|
43
|
+
border: 2px solid var(--accent-cyan);
|
|
44
|
+
border-radius: 12px;
|
|
45
|
+
padding: 30px;
|
|
46
|
+
margin-bottom: 30px;
|
|
47
|
+
box-shadow: 0 0 30px rgba(0, 255, 255, 0.3);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
h1 {
|
|
51
|
+
color: var(--accent-cyan);
|
|
52
|
+
font-size: 2.5em;
|
|
53
|
+
text-shadow: 0 0 20px rgba(0, 255, 255, 0.6);
|
|
54
|
+
margin-bottom: 10px;
|
|
55
|
+
}
|
|
56
|
+
|
|
57
|
+
.back-link {
|
|
58
|
+
display: inline-block;
|
|
59
|
+
color: var(--accent-cyan);
|
|
60
|
+
text-decoration: none;
|
|
61
|
+
margin-bottom: 15px;
|
|
62
|
+
transition: color 0.3s ease;
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
.back-link:hover {
|
|
66
|
+
color: #33ffff;
|
|
67
|
+
text-decoration: underline;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
.subtitle {
|
|
71
|
+
color: var(--text-secondary);
|
|
72
|
+
font-size: 1.1em;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
section {
|
|
76
|
+
background: var(--bg-secondary);
|
|
77
|
+
border-left: 4px solid var(--accent-cyan);
|
|
78
|
+
padding: 25px;
|
|
79
|
+
margin-bottom: 30px;
|
|
80
|
+
border-radius: 8px;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
h2 {
|
|
84
|
+
color: var(--accent-magenta);
|
|
85
|
+
font-size: 2em;
|
|
86
|
+
margin-bottom: 15px;
|
|
87
|
+
text-shadow: 0 0 10px rgba(255, 0, 128, 0.5);
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
h3 {
|
|
91
|
+
color: var(--accent-cyan);
|
|
92
|
+
font-size: 1.4em;
|
|
93
|
+
margin: 25px 0 15px 0;
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
.function {
|
|
97
|
+
background: var(--bg-tertiary);
|
|
98
|
+
border: 1px solid var(--border);
|
|
99
|
+
border-radius: 8px;
|
|
100
|
+
padding: 20px;
|
|
101
|
+
margin-bottom: 25px;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
.function-sig {
|
|
105
|
+
font-family: 'Courier New', Courier, monospace;
|
|
106
|
+
font-size: 1.2em;
|
|
107
|
+
color: var(--accent-yellow);
|
|
108
|
+
margin-bottom: 15px;
|
|
109
|
+
padding: 10px;
|
|
110
|
+
background: var(--code-bg);
|
|
111
|
+
border-radius: 4px;
|
|
112
|
+
border-left: 3px solid var(--accent-yellow);
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
.param-list, .return-info {
|
|
116
|
+
margin: 15px 0;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
.param {
|
|
120
|
+
padding: 8px 0;
|
|
121
|
+
border-bottom: 1px solid var(--border);
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
.param:last-child {
|
|
125
|
+
border-bottom: none;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
.param-name {
|
|
129
|
+
color: var(--accent-cyan);
|
|
130
|
+
font-weight: bold;
|
|
131
|
+
font-family: 'Courier New', Courier, monospace;
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
.param-type {
|
|
135
|
+
color: var(--accent-magenta);
|
|
136
|
+
font-style: italic;
|
|
137
|
+
font-size: 0.9em;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
.example {
|
|
141
|
+
background: var(--code-bg);
|
|
142
|
+
border: 1px solid var(--border);
|
|
143
|
+
border-radius: 8px;
|
|
144
|
+
padding: 20px;
|
|
145
|
+
margin: 15px 0;
|
|
146
|
+
overflow-x: auto;
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
.example-title {
|
|
150
|
+
color: var(--accent-yellow);
|
|
151
|
+
font-weight: bold;
|
|
152
|
+
margin-bottom: 10px;
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
pre {
|
|
156
|
+
margin: 0;
|
|
157
|
+
font-family: 'Courier New', Courier, monospace;
|
|
158
|
+
line-height: 1.5;
|
|
159
|
+
}
|
|
160
|
+
|
|
161
|
+
code {
|
|
162
|
+
color: var(--text-primary);
|
|
163
|
+
}
|
|
164
|
+
|
|
165
|
+
.note {
|
|
166
|
+
background: var(--bg-tertiary);
|
|
167
|
+
border-left: 4px solid var(--accent-yellow);
|
|
168
|
+
padding: 15px;
|
|
169
|
+
margin: 15px 0;
|
|
170
|
+
border-radius: 4px;
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
.note-title {
|
|
174
|
+
color: var(--accent-yellow);
|
|
175
|
+
font-weight: bold;
|
|
176
|
+
margin-bottom: 10px;
|
|
177
|
+
}
|
|
178
|
+
|
|
179
|
+
table {
|
|
180
|
+
width: 100%;
|
|
181
|
+
border-collapse: collapse;
|
|
182
|
+
margin: 15px 0;
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
th, td {
|
|
186
|
+
padding: 12px;
|
|
187
|
+
text-align: left;
|
|
188
|
+
border: 1px solid var(--border);
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
th {
|
|
192
|
+
background: var(--bg-tertiary);
|
|
193
|
+
color: var(--accent-cyan);
|
|
194
|
+
font-weight: bold;
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
tr:nth-child(even) {
|
|
198
|
+
background: var(--bg-tertiary);
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
footer {
|
|
202
|
+
text-align: center;
|
|
203
|
+
padding: 30px 20px;
|
|
204
|
+
color: var(--text-secondary);
|
|
205
|
+
border-top: 1px solid var(--border);
|
|
206
|
+
margin-top: 40px;
|
|
207
|
+
}
|
|
208
|
+
</style>
|
|
209
|
+
</head>
|
|
210
|
+
<body>
|
|
211
|
+
<div class="container">
|
|
212
|
+
<a href="index.html" class="back-link">← Back to Documentation Index</a>
|
|
213
|
+
|
|
214
|
+
<header>
|
|
215
|
+
<h1>🕹️ Input System</h1>
|
|
216
|
+
<p class="subtitle">Keyboard, mouse, and gamepad input handling</p>
|
|
217
|
+
</header>
|
|
218
|
+
|
|
219
|
+
|
|
220
|
+
<section>
|
|
221
|
+
<h2>📋 Overview</h2>
|
|
222
|
+
<p>Unified input system supporting keyboard, mouse, and gamepad with button state tracking.</p>
|
|
223
|
+
|
|
224
|
+
</section>
|
|
225
|
+
|
|
226
|
+
<section>
|
|
227
|
+
<h2>⌨️ Keyboard Functions</h2>
|
|
228
|
+
|
|
229
|
+
|
|
230
|
+
<div class='function'>
|
|
231
|
+
<div class='function-sig'>btn(buttonIndex)</div>
|
|
232
|
+
<p>Checks if a button is currently held down.</p>
|
|
233
|
+
<div class='param-list'>
|
|
234
|
+
<div class='param'>
|
|
235
|
+
<span class='param-name'>buttonIndex</span>
|
|
236
|
+
<span class='param-type'>number (0-13)</span> - Button index to check
|
|
237
|
+
</div>
|
|
238
|
+
</div>
|
|
239
|
+
|
|
240
|
+
<div class='return-info'>
|
|
241
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true if button is held
|
|
242
|
+
</div>
|
|
243
|
+
|
|
244
|
+
|
|
245
|
+
<div class='example'>
|
|
246
|
+
<div class='example-title'>Example:</div>
|
|
247
|
+
<pre><code>if (btn(0)) player.x -= 2; // Move left</code></pre>
|
|
248
|
+
</div>
|
|
249
|
+
|
|
250
|
+
</div>
|
|
251
|
+
|
|
252
|
+
<div class='function'>
|
|
253
|
+
<div class='function-sig'>btnp(buttonIndex)</div>
|
|
254
|
+
<p>Checks if a button was just pressed (one-shot).</p>
|
|
255
|
+
<div class='param-list'>
|
|
256
|
+
<div class='param'>
|
|
257
|
+
<span class='param-name'>buttonIndex</span>
|
|
258
|
+
<span class='param-type'>number (0-13)</span> - Button index to check
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div class='return-info'>
|
|
263
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true only on first frame of press
|
|
264
|
+
</div>
|
|
265
|
+
|
|
266
|
+
|
|
267
|
+
<div class='example'>
|
|
268
|
+
<div class='example-title'>Example:</div>
|
|
269
|
+
<pre><code>if (btnp(4)) player.jump(); // Jump on Z key press</code></pre>
|
|
270
|
+
</div>
|
|
271
|
+
|
|
272
|
+
</div>
|
|
273
|
+
|
|
274
|
+
<div class='function'>
|
|
275
|
+
<div class='function-sig'>isKeyDown(keyCode)</div>
|
|
276
|
+
<p>Checks if a specific keyboard key is currently held.</p>
|
|
277
|
+
<div class='param-list'>
|
|
278
|
+
<div class='param'>
|
|
279
|
+
<span class='param-name'>keyCode</span>
|
|
280
|
+
<span class='param-type'>string</span> - Key code (e.g., "w", "Space", "ArrowLeft")
|
|
281
|
+
</div>
|
|
282
|
+
</div>
|
|
283
|
+
|
|
284
|
+
<div class='return-info'>
|
|
285
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true if key is held
|
|
286
|
+
</div>
|
|
287
|
+
|
|
288
|
+
|
|
289
|
+
<div class='example'>
|
|
290
|
+
<div class='example-title'>Example:</div>
|
|
291
|
+
<pre><code>if (isKeyDown("w")) player.moveForward();</code></pre>
|
|
292
|
+
</div>
|
|
293
|
+
|
|
294
|
+
</div>
|
|
295
|
+
|
|
296
|
+
<div class='function'>
|
|
297
|
+
<div class='function-sig'>isKeyPressed(keyCode)</div>
|
|
298
|
+
<p>Checks if a key was just pressed (one-shot).</p>
|
|
299
|
+
<div class='param-list'>
|
|
300
|
+
<div class='param'>
|
|
301
|
+
<span class='param-name'>keyCode</span>
|
|
302
|
+
<span class='param-type'>string</span> - Key code
|
|
303
|
+
</div>
|
|
304
|
+
</div>
|
|
305
|
+
|
|
306
|
+
<div class='return-info'>
|
|
307
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true only on first frame
|
|
308
|
+
</div>
|
|
309
|
+
|
|
310
|
+
|
|
311
|
+
<div class='example'>
|
|
312
|
+
<div class='example-title'>Example:</div>
|
|
313
|
+
<pre><code>if (isKeyPressed("Enter")) selectMenuItem();</code></pre>
|
|
314
|
+
</div>
|
|
315
|
+
|
|
316
|
+
</div>
|
|
317
|
+
|
|
318
|
+
</section>
|
|
319
|
+
|
|
320
|
+
<section>
|
|
321
|
+
<h2>🖱️ Mouse Functions</h2>
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
<div class='function'>
|
|
325
|
+
<div class='function-sig'>mouseX()</div>
|
|
326
|
+
<p>Gets the current mouse X position (0-640).</p>
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
<div class='return-info'>
|
|
330
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Mouse X coordinate
|
|
331
|
+
</div>
|
|
332
|
+
|
|
333
|
+
|
|
334
|
+
<div class='example'>
|
|
335
|
+
<div class='example-title'>Example:</div>
|
|
336
|
+
<pre><code>const mx = mouseX();</code></pre>
|
|
337
|
+
</div>
|
|
338
|
+
|
|
339
|
+
</div>
|
|
340
|
+
|
|
341
|
+
<div class='function'>
|
|
342
|
+
<div class='function-sig'>mouseY()</div>
|
|
343
|
+
<p>Gets the current mouse Y position (0-360).</p>
|
|
344
|
+
|
|
345
|
+
|
|
346
|
+
<div class='return-info'>
|
|
347
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Mouse Y coordinate
|
|
348
|
+
</div>
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
<div class='example'>
|
|
352
|
+
<div class='example-title'>Example:</div>
|
|
353
|
+
<pre><code>const my = mouseY();</code></pre>
|
|
354
|
+
</div>
|
|
355
|
+
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<div class='function'>
|
|
359
|
+
<div class='function-sig'>mouseDown()</div>
|
|
360
|
+
<p>Checks if mouse button is held.</p>
|
|
361
|
+
|
|
362
|
+
|
|
363
|
+
<div class='return-info'>
|
|
364
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true if mouse button is down
|
|
365
|
+
</div>
|
|
366
|
+
|
|
367
|
+
|
|
368
|
+
<div class='example'>
|
|
369
|
+
<div class='example-title'>Example:</div>
|
|
370
|
+
<pre><code>if (mouseDown()) dragObject();</code></pre>
|
|
371
|
+
</div>
|
|
372
|
+
|
|
373
|
+
</div>
|
|
374
|
+
|
|
375
|
+
<div class='function'>
|
|
376
|
+
<div class='function-sig'>mousePressed()</div>
|
|
377
|
+
<p>Checks if mouse button was just clicked (one-shot).</p>
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
<div class='return-info'>
|
|
381
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true only on first frame of click
|
|
382
|
+
</div>
|
|
383
|
+
|
|
384
|
+
|
|
385
|
+
<div class='example'>
|
|
386
|
+
<div class='example-title'>Example:</div>
|
|
387
|
+
<pre><code>if (mousePressed()) handleClick();</code></pre>
|
|
388
|
+
</div>
|
|
389
|
+
|
|
390
|
+
</div>
|
|
391
|
+
|
|
392
|
+
</section>
|
|
393
|
+
|
|
394
|
+
<section>
|
|
395
|
+
<h2>🎮 Gamepad Functions</h2>
|
|
396
|
+
|
|
397
|
+
|
|
398
|
+
<div class='function'>
|
|
399
|
+
<div class='function-sig'>gamepadConnected()</div>
|
|
400
|
+
<p>Checks if a gamepad is connected.</p>
|
|
401
|
+
|
|
402
|
+
|
|
403
|
+
<div class='return-info'>
|
|
404
|
+
<strong>Returns:</strong> <span class='param-type'>boolean</span> - true if gamepad is connected
|
|
405
|
+
</div>
|
|
406
|
+
|
|
407
|
+
|
|
408
|
+
<div class='example'>
|
|
409
|
+
<div class='example-title'>Example:</div>
|
|
410
|
+
<pre><code>if (gamepadConnected()) useAnalogStick();</code></pre>
|
|
411
|
+
</div>
|
|
412
|
+
|
|
413
|
+
</div>
|
|
414
|
+
|
|
415
|
+
<div class='function'>
|
|
416
|
+
<div class='function-sig'>leftStickX()</div>
|
|
417
|
+
<p>Gets left analog stick X axis (-1.0 to 1.0).</p>
|
|
418
|
+
|
|
419
|
+
|
|
420
|
+
<div class='return-info'>
|
|
421
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Left stick X value with deadzone
|
|
422
|
+
</div>
|
|
423
|
+
|
|
424
|
+
|
|
425
|
+
<div class='example'>
|
|
426
|
+
<div class='example-title'>Example:</div>
|
|
427
|
+
<pre><code>player.x += leftStickX() * speed;</code></pre>
|
|
428
|
+
</div>
|
|
429
|
+
|
|
430
|
+
</div>
|
|
431
|
+
|
|
432
|
+
<div class='function'>
|
|
433
|
+
<div class='function-sig'>leftStickY()</div>
|
|
434
|
+
<p>Gets left analog stick Y axis (-1.0 to 1.0).</p>
|
|
435
|
+
|
|
436
|
+
|
|
437
|
+
<div class='return-info'>
|
|
438
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Left stick Y value with deadzone
|
|
439
|
+
</div>
|
|
440
|
+
|
|
441
|
+
|
|
442
|
+
<div class='example'>
|
|
443
|
+
<div class='example-title'>Example:</div>
|
|
444
|
+
<pre><code>player.y += leftStickY() * speed;</code></pre>
|
|
445
|
+
</div>
|
|
446
|
+
|
|
447
|
+
</div>
|
|
448
|
+
|
|
449
|
+
<div class='function'>
|
|
450
|
+
<div class='function-sig'>rightStickX()</div>
|
|
451
|
+
<p>Gets right analog stick X axis.</p>
|
|
452
|
+
|
|
453
|
+
|
|
454
|
+
<div class='return-info'>
|
|
455
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Right stick X value
|
|
456
|
+
</div>
|
|
457
|
+
|
|
458
|
+
|
|
459
|
+
<div class='example'>
|
|
460
|
+
<div class='example-title'>Example:</div>
|
|
461
|
+
<pre><code>camera.rotateY(rightStickX() * 0.05);</code></pre>
|
|
462
|
+
</div>
|
|
463
|
+
|
|
464
|
+
</div>
|
|
465
|
+
|
|
466
|
+
<div class='function'>
|
|
467
|
+
<div class='function-sig'>rightStickY()</div>
|
|
468
|
+
<p>Gets right analog stick Y axis.</p>
|
|
469
|
+
|
|
470
|
+
|
|
471
|
+
<div class='return-info'>
|
|
472
|
+
<strong>Returns:</strong> <span class='param-type'>number</span> - Right stick Y value
|
|
473
|
+
</div>
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
<div class='example'>
|
|
477
|
+
<div class='example-title'>Example:</div>
|
|
478
|
+
<pre><code>camera.rotateX(rightStickY() * 0.05);</code></pre>
|
|
479
|
+
</div>
|
|
480
|
+
|
|
481
|
+
</div>
|
|
482
|
+
|
|
483
|
+
</section>
|
|
484
|
+
|
|
485
|
+
|
|
486
|
+
<footer>
|
|
487
|
+
<p>Nova64 Fantasy Console © 2025 | <a href="index.html" style="color: var(--accent-cyan);">Back to Documentation</a></p>
|
|
488
|
+
</footer>
|
|
489
|
+
</div>
|
|
490
|
+
</body>
|
|
491
|
+
</html>
|