nova64 0.2.4 → 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 +24 -1
- package/public/os9-shell/assets/index-B1Uvacma.js +0 -32825
- package/public/os9-shell/assets/index-B1Uvacma.js.map +0 -1
|
@@ -0,0 +1,407 @@
|
|
|
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>Skybox API - 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
|
+
|
|
209
|
+
ul {
|
|
210
|
+
margin-left: 20px;
|
|
211
|
+
margin-top: 10px;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
li {
|
|
215
|
+
margin: 5px 0;
|
|
216
|
+
}
|
|
217
|
+
</style>
|
|
218
|
+
</head>
|
|
219
|
+
<body>
|
|
220
|
+
<div class="container">
|
|
221
|
+
<a href="index.html" class="back-link">← Back to Documentation Index</a>
|
|
222
|
+
|
|
223
|
+
<header>
|
|
224
|
+
<h1>🌌 Skybox API</h1>
|
|
225
|
+
<p class="subtitle">Space, gradient, solid-colour, and image-based skyboxes with animation control</p>
|
|
226
|
+
</header>
|
|
227
|
+
|
|
228
|
+
<section>
|
|
229
|
+
<h2>📋 Overview</h2>
|
|
230
|
+
<p>The Skybox API lets you set any kind of background for your 3D scene — procedural star fields, gradient skies, flat colours, or full cube-map images. Only one skybox is active at a time; calling a new <code>create*Skybox</code> function automatically replaces the previous one.</p>
|
|
231
|
+
<div class="note">
|
|
232
|
+
<div class="note-title">💡 Key Features</div>
|
|
233
|
+
<ul>
|
|
234
|
+
<li><strong>Space skybox</strong> – procedural stars, nebulae, optional galaxy spiral</li>
|
|
235
|
+
<li><strong>Gradient skybox</strong> – any two-colour horizon gradient (daytime, sunset, underwater…)</li>
|
|
236
|
+
<li><strong>Solid-colour skybox</strong> – single flat colour (caves, indoor scenes)</li>
|
|
237
|
+
<li><strong>Image skybox</strong> – six cube-face textures for photorealistic environments; also sets IBL for PBR materials</li>
|
|
238
|
+
<li><strong>Animation control</strong> – auto-animate, speed multiplier, pause, or reverse</li>
|
|
239
|
+
</ul>
|
|
240
|
+
</div>
|
|
241
|
+
</section>
|
|
242
|
+
|
|
243
|
+
<section>
|
|
244
|
+
<h2>🌟 Skybox Creation</h2>
|
|
245
|
+
|
|
246
|
+
<div class="function">
|
|
247
|
+
<div class="function-sig">createSpaceSkybox(options?)</div>
|
|
248
|
+
<p>Creates a procedural space background with stars and optional nebulae.</p>
|
|
249
|
+
<div class="param-list">
|
|
250
|
+
<div class="param"><span class="param-name">options.starCount</span> <span class="param-type">number</span> – Number of stars (default: 5000)</div>
|
|
251
|
+
<div class="param"><span class="param-name">options.starSize</span> <span class="param-type">number</span> – Star point size (default: 1)</div>
|
|
252
|
+
<div class="param"><span class="param-name">options.nebulae</span> <span class="param-type">boolean</span> – Include nebula clouds (default: true)</div>
|
|
253
|
+
<div class="param"><span class="param-name">options.nebulaColor</span> <span class="param-type">hex</span> – Nebula colour tint (default: 0x8800ff)</div>
|
|
254
|
+
</div>
|
|
255
|
+
<div class="example">
|
|
256
|
+
<div class="example-title">Example</div>
|
|
257
|
+
<pre><code>// Space combat scene
|
|
258
|
+
createSpaceSkybox({ starCount: 10000, nebulaColor: 0x4400ff });</code></pre>
|
|
259
|
+
</div>
|
|
260
|
+
</div>
|
|
261
|
+
|
|
262
|
+
<div class="function">
|
|
263
|
+
<div class="function-sig">createGradientSkybox(topColor, bottomColor)</div>
|
|
264
|
+
<p>Creates a smooth two-colour gradient sky — ideal for outdoor scenes.</p>
|
|
265
|
+
<div class="param-list">
|
|
266
|
+
<div class="param"><span class="param-name">topColor</span> <span class="param-type">hex</span> – Colour at the top of the sky</div>
|
|
267
|
+
<div class="param"><span class="param-name">bottomColor</span> <span class="param-type">hex</span> – Colour at the horizon</div>
|
|
268
|
+
</div>
|
|
269
|
+
<div class="example">
|
|
270
|
+
<div class="example-title">Example</div>
|
|
271
|
+
<pre><code>createGradientSkybox(0x1a6aa8, 0xf4a460); // warm sunset
|
|
272
|
+
createGradientSkybox(0x87ceeb, 0x228b22); // daytime with green ground tint</code></pre>
|
|
273
|
+
</div>
|
|
274
|
+
</div>
|
|
275
|
+
|
|
276
|
+
<div class="function">
|
|
277
|
+
<div class="function-sig">createSolidSkybox(color)</div>
|
|
278
|
+
<p>Sets the background to a single flat colour — useful for caves, indoor rooms, or stylised scenes.</p>
|
|
279
|
+
<div class="param-list">
|
|
280
|
+
<div class="param"><span class="param-name">color</span> <span class="param-type">hex</span> – Background colour</div>
|
|
281
|
+
</div>
|
|
282
|
+
<div class="example">
|
|
283
|
+
<div class="example-title">Example</div>
|
|
284
|
+
<pre><code>createSolidSkybox(0x000000); // pitch-black cave
|
|
285
|
+
createSolidSkybox(0x1a1a2e); // deep navy interior</code></pre>
|
|
286
|
+
</div>
|
|
287
|
+
</div>
|
|
288
|
+
|
|
289
|
+
<div class="function">
|
|
290
|
+
<div class="function-sig">createImageSkybox([px, nx, py, ny, pz, nz])</div>
|
|
291
|
+
<p>Loads six cube-face images as the skybox. Also sets them as the scene's <strong>environment map</strong>, enabling image-based lighting (IBL) for PBR materials — reflections and light come from the sky.</p>
|
|
292
|
+
<div class="param-list">
|
|
293
|
+
<div class="param"><span class="param-name">urls</span> <span class="param-type">string[6]</span> – Paths to the +X, -X, +Y, -Y, +Z, -Z cube faces (in that order)</div>
|
|
294
|
+
</div>
|
|
295
|
+
<div class="return-info"><strong>Returns:</strong> <span class="param-type">Promise<void></span> – resolves once all textures are loaded</div>
|
|
296
|
+
<div class="note">
|
|
297
|
+
<div class="note-title">⚠️ Use <code>await</code> in your <code>init()</code></div>
|
|
298
|
+
<p>Loading is async — await the call so objects are fully lit before the first frame.</p>
|
|
299
|
+
</div>
|
|
300
|
+
<div class="example">
|
|
301
|
+
<div class="example-title">Example</div>
|
|
302
|
+
<pre><code>export async function init() {
|
|
303
|
+
await createImageSkybox([
|
|
304
|
+
'/assets/sky/studio/px.png',
|
|
305
|
+
'/assets/sky/studio/nx.png',
|
|
306
|
+
'/assets/sky/studio/py.png',
|
|
307
|
+
'/assets/sky/studio/ny.png',
|
|
308
|
+
'/assets/sky/studio/pz.png',
|
|
309
|
+
'/assets/sky/studio/nz.png',
|
|
310
|
+
]);
|
|
311
|
+
// PBR spheres now receive correct reflections
|
|
312
|
+
createSphere(1, 0xffffff, [0, 1, 0], { material: 'metallic', roughness: 0.1 });
|
|
313
|
+
}</code></pre>
|
|
314
|
+
</div>
|
|
315
|
+
</div>
|
|
316
|
+
|
|
317
|
+
<div class="function">
|
|
318
|
+
<div class="function-sig">clearSkybox()</div>
|
|
319
|
+
<p>Removes the active skybox, leaving a transparent/black background.</p>
|
|
320
|
+
<div class="example">
|
|
321
|
+
<div class="example-title">Example</div>
|
|
322
|
+
<pre><code>clearSkybox();</code></pre>
|
|
323
|
+
</div>
|
|
324
|
+
</div>
|
|
325
|
+
</section>
|
|
326
|
+
|
|
327
|
+
<section>
|
|
328
|
+
<h2>🎬 Animation & Speed</h2>
|
|
329
|
+
|
|
330
|
+
<div class="function">
|
|
331
|
+
<div class="function-sig">animateSkybox(dt)</div>
|
|
332
|
+
<p>Advances the skybox rotation by <code>dt</code> seconds. Call this manually inside your <code>update(dt)</code> loop, or use <code>enableSkyboxAutoAnimate()</code> to let the engine do it automatically.</p>
|
|
333
|
+
<div class="param-list">
|
|
334
|
+
<div class="param"><span class="param-name">dt</span> <span class="param-type">number</span> – Delta time in seconds</div>
|
|
335
|
+
</div>
|
|
336
|
+
<div class="example">
|
|
337
|
+
<div class="example-title">Example</div>
|
|
338
|
+
<pre><code>export function update(dt) {
|
|
339
|
+
animateSkybox(dt); // manual control
|
|
340
|
+
}</code></pre>
|
|
341
|
+
</div>
|
|
342
|
+
</div>
|
|
343
|
+
|
|
344
|
+
<div class="function">
|
|
345
|
+
<div class="function-sig">enableSkyboxAutoAnimate(speed?)</div>
|
|
346
|
+
<p>Tells the engine to automatically call <code>animateSkybox(dt)</code> every frame, so you don't need to do it manually in <code>update()</code>.</p>
|
|
347
|
+
<div class="param-list">
|
|
348
|
+
<div class="param"><span class="param-name">speed</span> <span class="param-type">number</span> – Speed multiplier (default: 1.0). Use 0 to pause, negative to reverse.</div>
|
|
349
|
+
</div>
|
|
350
|
+
<div class="example">
|
|
351
|
+
<div class="example-title">Example</div>
|
|
352
|
+
<pre><code>enableSkyboxAutoAnimate(); // default speed
|
|
353
|
+
enableSkyboxAutoAnimate(0.25); // slow drift
|
|
354
|
+
enableSkyboxAutoAnimate(-1); // reverse</code></pre>
|
|
355
|
+
</div>
|
|
356
|
+
</div>
|
|
357
|
+
|
|
358
|
+
<div class="function">
|
|
359
|
+
<div class="function-sig">disableSkyboxAutoAnimate()</div>
|
|
360
|
+
<p>Stops the engine from automatically rotating the skybox each frame.</p>
|
|
361
|
+
<div class="example">
|
|
362
|
+
<div class="example-title">Example</div>
|
|
363
|
+
<pre><code>disableSkyboxAutoAnimate();</code></pre>
|
|
364
|
+
</div>
|
|
365
|
+
</div>
|
|
366
|
+
|
|
367
|
+
<div class="function">
|
|
368
|
+
<div class="function-sig">setSkyboxSpeed(multiplier)</div>
|
|
369
|
+
<p>Changes the rotation speed of the active skybox animation without disabling/re-enabling it.</p>
|
|
370
|
+
<div class="param-list">
|
|
371
|
+
<div class="param"><span class="param-name">multiplier</span> <span class="param-type">number</span> – Speed multiplier: <code>0</code> = frozen, <code>1</code> = normal, <code>2</code> = double, <code>-1</code> = reverse</div>
|
|
372
|
+
</div>
|
|
373
|
+
<div class="example">
|
|
374
|
+
<div class="example-title">Example</div>
|
|
375
|
+
<pre><code>setSkyboxSpeed(0); // freeze during a cutscene
|
|
376
|
+
setSkyboxSpeed(2); // warp-speed effect
|
|
377
|
+
setSkyboxSpeed(1); // restore normal speed</code></pre>
|
|
378
|
+
</div>
|
|
379
|
+
</div>
|
|
380
|
+
</section>
|
|
381
|
+
|
|
382
|
+
<section>
|
|
383
|
+
<h2>📚 Quick Reference</h2>
|
|
384
|
+
<table>
|
|
385
|
+
<thead>
|
|
386
|
+
<tr><th>Function</th><th>Use case</th></tr>
|
|
387
|
+
</thead>
|
|
388
|
+
<tbody>
|
|
389
|
+
<tr><td><code>createSpaceSkybox(opts?)</code></td><td>Space games, sci-fi</td></tr>
|
|
390
|
+
<tr><td><code>createGradientSkybox(top, bottom)</code></td><td>Outdoor, sunset, underwater</td></tr>
|
|
391
|
+
<tr><td><code>createSolidSkybox(color)</code></td><td>Caves, indoor, stylised</td></tr>
|
|
392
|
+
<tr><td><code>createImageSkybox([6 urls])</code></td><td>Photorealistic + IBL for PBR</td></tr>
|
|
393
|
+
<tr><td><code>clearSkybox()</code></td><td>Remove background</td></tr>
|
|
394
|
+
<tr><td><code>animateSkybox(dt)</code></td><td>Manual frame-by-frame rotation</td></tr>
|
|
395
|
+
<tr><td><code>enableSkyboxAutoAnimate(speed?)</code></td><td>Set-and-forget rotation</td></tr>
|
|
396
|
+
<tr><td><code>disableSkyboxAutoAnimate()</code></td><td>Stop auto rotation</td></tr>
|
|
397
|
+
<tr><td><code>setSkyboxSpeed(mult)</code></td><td>Adjust speed at runtime</td></tr>
|
|
398
|
+
</tbody>
|
|
399
|
+
</table>
|
|
400
|
+
</section>
|
|
401
|
+
|
|
402
|
+
<footer>
|
|
403
|
+
<p>Nova64 Fantasy Console © 2026 | <a href="index.html" style="color: var(--accent-cyan);">Back to Documentation</a></p>
|
|
404
|
+
</footer>
|
|
405
|
+
</div>
|
|
406
|
+
</body>
|
|
407
|
+
</html>
|