tosijs-3d 0.3.0 → 0.4.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/dist/asset-url.d.ts +10 -0
- package/dist/asset-url.d.ts.map +1 -0
- package/dist/asset-url.js +37 -0
- package/dist/asset-url.js.map +1 -0
- package/dist/b3d-aircraft.d.ts +67 -0
- package/dist/b3d-aircraft.d.ts.map +1 -1
- package/dist/b3d-aircraft.js +476 -2
- package/dist/b3d-aircraft.js.map +1 -1
- package/dist/b3d-biped.d.ts +16 -0
- package/dist/b3d-biped.d.ts.map +1 -1
- package/dist/b3d-biped.js +80 -1
- package/dist/b3d-biped.js.map +1 -1
- package/dist/b3d-controllable.d.ts.map +1 -1
- package/dist/b3d-controllable.js +6 -1
- package/dist/b3d-controllable.js.map +1 -1
- package/dist/b3d-controller.d.ts +38 -0
- package/dist/b3d-controller.d.ts.map +1 -0
- package/dist/b3d-controller.js +64 -0
- package/dist/b3d-controller.js.map +1 -0
- package/dist/b3d-destroyable.d.ts +39 -7
- package/dist/b3d-destroyable.d.ts.map +1 -1
- package/dist/b3d-destroyable.js +187 -50
- package/dist/b3d-destroyable.js.map +1 -1
- package/dist/b3d-hud.d.ts +127 -0
- package/dist/b3d-hud.d.ts.map +1 -0
- package/dist/b3d-hud.js +368 -0
- package/dist/b3d-hud.js.map +1 -0
- package/dist/b3d-launcher.d.ts +188 -0
- package/dist/b3d-launcher.d.ts.map +1 -0
- package/dist/b3d-launcher.js +521 -0
- package/dist/b3d-launcher.js.map +1 -0
- package/dist/b3d-loader.d.ts +28 -0
- package/dist/b3d-loader.d.ts.map +1 -1
- package/dist/b3d-loader.js +86 -1
- package/dist/b3d-loader.js.map +1 -1
- package/dist/b3d-radar-blip.d.ts +37 -0
- package/dist/b3d-radar-blip.d.ts.map +1 -0
- package/dist/b3d-radar-blip.js +120 -0
- package/dist/b3d-radar-blip.js.map +1 -0
- package/dist/b3d-radar.d.ts +42 -0
- package/dist/b3d-radar.d.ts.map +1 -0
- package/dist/b3d-radar.js +133 -0
- package/dist/b3d-radar.js.map +1 -0
- package/dist/b3d-star-system.d.ts.map +1 -1
- package/dist/b3d-star-system.js +3 -1
- package/dist/b3d-star-system.js.map +1 -1
- package/dist/b3d-turret.d.ts +73 -0
- package/dist/b3d-turret.d.ts.map +1 -0
- package/dist/b3d-turret.js +296 -0
- package/dist/b3d-turret.js.map +1 -0
- package/dist/b3d-utils.d.ts +8 -0
- package/dist/b3d-utils.d.ts.map +1 -1
- package/dist/b3d-utils.js +14 -0
- package/dist/b3d-utils.js.map +1 -1
- package/dist/b3d-warhead.d.ts +39 -0
- package/dist/b3d-warhead.d.ts.map +1 -0
- package/dist/b3d-warhead.js +231 -0
- package/dist/b3d-warhead.js.map +1 -0
- package/dist/ballistics.d.ts +11 -0
- package/dist/ballistics.d.ts.map +1 -1
- package/dist/ballistics.js +35 -0
- package/dist/ballistics.js.map +1 -1
- package/dist/destroyable-behavior.d.ts +66 -0
- package/dist/destroyable-behavior.d.ts.map +1 -0
- package/dist/destroyable-behavior.js +174 -0
- package/dist/destroyable-behavior.js.map +1 -0
- package/dist/game-controller.d.ts +3 -0
- package/dist/game-controller.d.ts.map +1 -1
- package/dist/game-controller.js +36 -2
- package/dist/game-controller.js.map +1 -1
- package/dist/guidance.d.ts +65 -0
- package/dist/guidance.d.ts.map +1 -0
- package/dist/guidance.js +150 -0
- package/dist/guidance.js.map +1 -0
- package/dist/hud-math.d.ts +88 -0
- package/dist/hud-math.d.ts.map +1 -0
- package/dist/hud-math.js +148 -0
- package/dist/hud-math.js.map +1 -0
- package/dist/hud.d.ts +72 -0
- package/dist/hud.d.ts.map +1 -0
- package/dist/hud.js +309 -0
- package/dist/hud.js.map +1 -0
- package/dist/iife.js +1745 -1773
- package/dist/iife.js.map +36 -46
- package/dist/index.d.ts +20 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +18 -2
- package/dist/index.js.map +1 -1
- package/dist/radar.d.ts +75 -0
- package/dist/radar.d.ts.map +1 -0
- package/dist/radar.js +129 -0
- package/dist/radar.js.map +1 -0
- package/dist/tosi-b3d.d.ts +57 -0
- package/dist/tosi-b3d.d.ts.map +1 -1
- package/dist/tosi-b3d.js +205 -14
- package/dist/tosi-b3d.js.map +1 -1
- package/dist/virtual-gamepad.d.ts.map +1 -1
- package/dist/virtual-gamepad.js +11 -0
- package/dist/virtual-gamepad.js.map +1 -1
- package/package.json +3 -2
package/dist/b3d-aircraft.js
CHANGED
|
@@ -13,7 +13,7 @@ The full flight model is explained below the demo.
|
|
|
13
13
|
## Demo
|
|
14
14
|
|
|
15
15
|
```js
|
|
16
|
-
import { b3d, b3dAircraft, b3dLibrary, b3dLight, b3dSun, b3dSkybox, b3dGround, gameController, inputFocus } from 'tosijs-3d'
|
|
16
|
+
import { b3d, b3dAircraft, b3dHud, b3dLibrary, b3dLight, b3dSun, b3dSkybox, b3dGround, gameController, inputFocus } from 'tosijs-3d'
|
|
17
17
|
import { elements } from 'tosijs'
|
|
18
18
|
const { div, span } = elements
|
|
19
19
|
|
|
@@ -85,6 +85,9 @@ const scene = addMarkers(b3d(
|
|
|
85
85
|
// aircraft's shadow would shrink to sub-pixel (i.e. invisible).
|
|
86
86
|
b3dGround({ meshName: 'ground_nocast', width: 500, height: 500, color: '#7d9b6e' }),
|
|
87
87
|
b3dLibrary({ url: '/test-2.glb', type: 'vehicles' }),
|
|
88
|
+
// Drop in the gauge HUD — the player aircraft drives it automatically (speed,
|
|
89
|
+
// altitude vs `ceiling`, and the pitch/roll horizon).
|
|
90
|
+
b3dHud({}),
|
|
88
91
|
inputFocus(
|
|
89
92
|
gameController(),
|
|
90
93
|
aircraft,
|
|
@@ -140,6 +143,114 @@ tosi-b3d { width: 100%; height: 100%; }
|
|
|
140
143
|
}
|
|
141
144
|
```
|
|
142
145
|
|
|
146
|
+
## Combat — radar, locks, guns & missiles
|
|
147
|
+
|
|
148
|
+
The aircraft carries a [radar](?b3d-radar.ts) (a `<tosi-b3d-radar>` child) that paints
|
|
149
|
+
every [radar-blip](?b3d-radar-blip.ts) in range on the HUD — **red = hostile, tan =
|
|
150
|
+
neutral**, a diamond ahead is a **waypoint** — and builds a **lock** on the nearest
|
|
151
|
+
*hostile* in front of you (up to two). Fly a target into the **gun reticle** (the ring
|
|
152
|
+
ahead of the nose) and hold fire for the straight-ahead cannon; tap **missile** to send a
|
|
153
|
+
guided round at your nearest lock (no lock ⇒ it flies ballistic). Neutrals show on radar
|
|
154
|
+
but never lock. Your own missile shows as a faint friendly blip. Targets glow redder as
|
|
155
|
+
they take damage, then explode.
|
|
156
|
+
|
|
157
|
+
**Controls:** on the glass pad, **A = guns** (hold), **B = missile**, **right bumper =
|
|
158
|
+
bomb**. On the keyboard: `Space` = guns, `F` = missile, `RShift` = bomb. (Fly with W/S
|
|
159
|
+
pitch, A/D bank, R/Q throttle.)
|
|
160
|
+
|
|
161
|
+
```js
|
|
162
|
+
import { b3d, b3dAircraft, b3dRadar, b3dRadarBlip, b3dHud, b3dLibrary, b3dDestroyable, b3dLight, b3dSun, b3dSkybox, b3dGround, gameController, inputFocus } from 'tosijs-3d'
|
|
163
|
+
import { elements } from 'tosijs'
|
|
164
|
+
const { div } = elements
|
|
165
|
+
|
|
166
|
+
// The aircraft with an attached radar: 250m nominal range, front hemisphere, ~1.2s to
|
|
167
|
+
// lock, up to 2 locks. Its state is surfaced on the HUD (the radar itself has no UI).
|
|
168
|
+
const RADAR_RANGE = 250 // nominal radar range (m); a profile-1 blip detects within it
|
|
169
|
+
const MAX_ALT = 300 // the aircraft's max altitude (its `ceiling`, default 300)
|
|
170
|
+
|
|
171
|
+
const aircraft = b3dAircraft({
|
|
172
|
+
library: 'vehicles', meshName: 'scout',
|
|
173
|
+
player: true, y: 0, vtolSpeed: 6, maxSpeed: 55,
|
|
174
|
+
hudChase: true, // show the HUD (and its radar) in the chase view, not just cockpit
|
|
175
|
+
}, b3dRadar({ range: RADAR_RANGE, coneDeg: 90, lockTime: 1.2, maxLocks: 2 }))
|
|
176
|
+
|
|
177
|
+
// A target = a destroyable cube that's ALSO a radar-blip (nested, so the blip follows
|
|
178
|
+
// the cube). Faction picks the colour + whether the radar will lock it: HOSTILE locks,
|
|
179
|
+
// NEUTRAL only shows. capacity 6 ≈ one cannon burst or one missile.
|
|
180
|
+
function target({ faction, ...pos }) {
|
|
181
|
+
const color = faction === 'hostile' ? '#d05050' : '#c7ad55'
|
|
182
|
+
return b3dDestroyable(
|
|
183
|
+
{ meshName: 'drone', size: 2.4, color, capacity: 6, ...pos,
|
|
184
|
+
explode: 'on', explodeForce: 8,
|
|
185
|
+
deathBlast: 'on', blastDamage: 10, blastFullRadius: 2, blastRadius: 6 },
|
|
186
|
+
b3dRadarBlip({ faction, profile: 1 }),
|
|
187
|
+
)
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
// Scatter targets across a wide forward arc, 0.5×–1.5× radar range out — so some sit
|
|
191
|
+
// BEYOND radar range and only appear as you close on them. AERIAL targets span 0.1×–
|
|
192
|
+
// 1.25× the aircraft's max altitude (a few above its ceiling → radar contacts you can
|
|
193
|
+
// only reach with a missile); GROUND targets sit on the deck.
|
|
194
|
+
function scatter(aerial) {
|
|
195
|
+
const d = RADAR_RANGE * (0.5 + Math.random()) // 0.5×..1.5× range
|
|
196
|
+
const az = (Math.random() - 0.5) * (170 * Math.PI / 180) // ±85° around the nose (+Z)
|
|
197
|
+
return target({
|
|
198
|
+
faction: Math.random() < 0.65 ? 'hostile' : 'neutral',
|
|
199
|
+
x: Math.sin(az) * d,
|
|
200
|
+
z: Math.cos(az) * d,
|
|
201
|
+
y: aerial ? MAX_ALT * (0.1 + Math.random() * 1.15) : 1.0 + Math.random() * 1.2,
|
|
202
|
+
})
|
|
203
|
+
}
|
|
204
|
+
const air = Array.from({ length: 12 }, () => scatter(true))
|
|
205
|
+
const ground = Array.from({ length: 8 }, () => scatter(false))
|
|
206
|
+
const targets = [...air, ...ground]
|
|
207
|
+
|
|
208
|
+
const kills = div({ class: 'kills' }, `Targets down: 0 / ${targets.length}`)
|
|
209
|
+
let down = 0
|
|
210
|
+
|
|
211
|
+
const scene = b3d(
|
|
212
|
+
{
|
|
213
|
+
gamepad: true,
|
|
214
|
+
sceneCreated(el) {
|
|
215
|
+
el.addEventListener('destroyed', () => {
|
|
216
|
+
down += 1
|
|
217
|
+
kills.textContent = `Targets down: ${down} / ${targets.length}`
|
|
218
|
+
})
|
|
219
|
+
// Gently drift the AIR targets so they move on radar but stay hittable.
|
|
220
|
+
let t = 0
|
|
221
|
+
el.scene.onBeforeRenderObservable.add(() => {
|
|
222
|
+
t += el.scene.getEngine().getDeltaTime() / 1000
|
|
223
|
+
air.forEach((d, i) => {
|
|
224
|
+
if (d.dead) return
|
|
225
|
+
d.x += Math.sin(t * 0.3 + i) * 0.02
|
|
226
|
+
d.y += Math.sin(t * 0.6 + i * 2) * 0.01
|
|
227
|
+
})
|
|
228
|
+
})
|
|
229
|
+
},
|
|
230
|
+
},
|
|
231
|
+
b3dLight({ y: 1, intensity: 0.5 }),
|
|
232
|
+
b3dSun({ x: -0.6, y: -1, z: -0.4, intensity: 0.9, shadowTextureSize: 2048, shadowMaxZ: 300 }),
|
|
233
|
+
b3dSkybox({ timeOfDay: 10 }),
|
|
234
|
+
b3dGround({ meshName: 'ground_nocast', width: 900, height: 900, color: '#7d9b6e' }),
|
|
235
|
+
b3dLibrary({ url: '/test-2.glb', type: 'vehicles' }),
|
|
236
|
+
b3dHud({}),
|
|
237
|
+
// A NAV WAYPOINT: a positional blip (no mesh), always detectable (profile -1),
|
|
238
|
+
// shown far ahead on the HUD as a waypoint diamond.
|
|
239
|
+
b3dRadarBlip({ faction: 'waypoint', profile: -1, x: 0, y: 25, z: 300 }),
|
|
240
|
+
...targets,
|
|
241
|
+
inputFocus(gameController(), aircraft),
|
|
242
|
+
)
|
|
243
|
+
preview.append(scene, kills)
|
|
244
|
+
```
|
|
245
|
+
```css
|
|
246
|
+
tosi-b3d { width: 100%; height: 100%; }
|
|
247
|
+
.kills {
|
|
248
|
+
position: absolute; top: 10px; right: 10px; z-index: 10;
|
|
249
|
+
padding: 6px 12px; border-radius: 4px;
|
|
250
|
+
background: rgba(0, 0, 0, 0.55); color: #ffcf6a; font: 14px monospace;
|
|
251
|
+
}
|
|
252
|
+
```
|
|
253
|
+
|
|
143
254
|
## Flight model
|
|
144
255
|
|
|
145
256
|
You're in PLANE mode (trigger = forward thrust) if you're fast enough (`vtolSpeed`)
|
|
@@ -178,6 +289,35 @@ lift/throttle (the dual-purpose axis above), right stick Y = camera zoom.
|
|
|
178
289
|
| `hoverCeiling` | `50` | Height above ground above which the trigger is forward thrust regardless of speed (take off vertically, then fly) and the brake can't stall you below `vtolSpeed`. Below it, slowing to a hover gives the vertical trigger back for a vertical landing. 0 = off. |
|
|
179
290
|
| `groundY` | `0` | Assumed ground-plane height (a floor in addition to any terrain colliders) |
|
|
180
291
|
| `crashSpeed` | `8` | Vertical impact speed (m/s) above which a ground contact is a crash |
|
|
292
|
+
| `hudChase` | `false` | Show the flat DOM HUD overlay in chase view (cockpit uses the in-scene HUD) |
|
|
293
|
+
| `hudSize` | `0.7` | In-cockpit HUD plane size (metres) |
|
|
294
|
+
| `hudForward` | `1.6` | How far ahead of the pilot's eye the HUD floats (metres) |
|
|
295
|
+
| `weapons` | `'on'` | `'off'` disarms all weapons |
|
|
296
|
+
| `gunRate` | `9` | Cannon shots/sec while `shoot` is held |
|
|
297
|
+
| `gunSpeed` | `130` | Cannon muzzle speed (added to airspeed) |
|
|
298
|
+
| `gunDamage` | `8` | Per-shell warhead full damage |
|
|
299
|
+
| `missileSpeed` | `55` | Guided-missile cruise speed |
|
|
300
|
+
| `missileTurnRate` | `3` | Guided-missile agility (rad/sec) |
|
|
301
|
+
| `missileDamage` | `30` | Missile warhead full damage |
|
|
302
|
+
| `bombDamage` | `45` | Bomb warhead full damage |
|
|
303
|
+
| `lockRange` | `140` | Max range to acquire a missile target |
|
|
304
|
+
| `lockConeDeg` | `35` | Half-angle of the forward cone missiles lock within |
|
|
305
|
+
|
|
306
|
+
## Weapons (the combat slice)
|
|
307
|
+
|
|
308
|
+
Built on the pure combat toolkit ([destroyable](?b3d-destroyable.ts) /
|
|
309
|
+
[warhead](?b3d-warhead.ts) / [launcher](?b3d-launcher.ts) / [guidance](?guidance.ts)).
|
|
310
|
+
Shells inherit the airframe's velocity, so your own motion leads the shot. Any
|
|
311
|
+
[b3d-destroyable](?b3d-destroyable.ts) in the scene takes the damage.
|
|
312
|
+
|
|
313
|
+
| Control (default map) | Weapon |
|
|
314
|
+
| --- | --- |
|
|
315
|
+
| **Guns** — A (held) | Cannon: fast ballistic shells, small blast |
|
|
316
|
+
| **Missile** — B (tap) | Homes on your nearest radar lock (else fires straight as a dumb rocket) |
|
|
317
|
+
| **Bomb** — right bumper (tap) | Falls under gravity with your forward momentum; big blast |
|
|
318
|
+
|
|
319
|
+
`fireGuns()`, `dropBomb()`, and `fireMissile()` are also callable directly (e.g. for
|
|
320
|
+
an AI pilot). Set `weapons="off"` to disarm.
|
|
181
321
|
|
|
182
322
|
## API (read-only properties for HUD binding)
|
|
183
323
|
|
|
@@ -197,7 +337,8 @@ import * as BABYLON from '@babylonjs/core';
|
|
|
197
337
|
import { B3dControllable } from './b3d-controllable';
|
|
198
338
|
import { aircraftMapping } from './virtual-gamepad';
|
|
199
339
|
import { flyByWireStep, targetVelocity, chaseVelocity, } from './fly-by-wire';
|
|
200
|
-
import { placeOnSurface, boundingBottomOffset } from './b3d-utils';
|
|
340
|
+
import { placeOnSurface, boundingBottomOffset, isOff } from './b3d-utils';
|
|
341
|
+
import { spawnProjectile, spawnMissile } from './b3d-launcher';
|
|
201
342
|
// Small gap kept between the model's belly and the ground.
|
|
202
343
|
const GROUND_SEPARATION = 0.05;
|
|
203
344
|
const DEG2RAD = Math.PI / 180;
|
|
@@ -236,6 +377,15 @@ export class B3dAircraft extends B3dControllable {
|
|
|
236
377
|
meshName: '',
|
|
237
378
|
player: false,
|
|
238
379
|
enterable: false,
|
|
380
|
+
// Service ceiling (m): the aircraft can't climb past it, and it reads full on
|
|
381
|
+
// a linked HUD's altitude gauge.
|
|
382
|
+
ceiling: 300,
|
|
383
|
+
// Show the HUD in the chase view too (default: cockpit view only).
|
|
384
|
+
hudChase: false,
|
|
385
|
+
// In-cockpit HUD plane placement (see b3d-hud attachInScene): its size in metres
|
|
386
|
+
// and how far ahead of the pilot's eye it floats. Tune to taste per airframe.
|
|
387
|
+
hudSize: 0.7,
|
|
388
|
+
hudForward: 1.6,
|
|
239
389
|
maxSpeed: 50,
|
|
240
390
|
// Hard speed ceiling while the throttle is held past maxSpeed (afterburner).
|
|
241
391
|
// Release and it bleeds back to maxSpeed. ≤ maxSpeed disables afterburner.
|
|
@@ -256,6 +406,23 @@ export class B3dAircraft extends B3dControllable {
|
|
|
256
406
|
// Vertical impact speed (m/s) above which a ground contact is a crash, not
|
|
257
407
|
// a landing.
|
|
258
408
|
crashSpeed: 8,
|
|
409
|
+
// --- Weapons (the combat slice; see COMBAT-DESIGN.md). 'off' to disarm. ---
|
|
410
|
+
weapons: 'on',
|
|
411
|
+
gunRate: 9, // cannon shots per second (held `shoot`)
|
|
412
|
+
gunSpeed: 130, // muzzle speed of cannon shells (added to airspeed)
|
|
413
|
+
gunDamage: 8, // per-shell warhead full damage
|
|
414
|
+
missileSpeed: 90, // guided-missile cruise speed (faster than the airframe so it pulls ahead)
|
|
415
|
+
missileAccel: 120, // thrust accel (units/s²) ramping launch → cruise (inherits your velocity)
|
|
416
|
+
missileBoost: 0.45, // boost: forced forward accel; seeker authority ramps in across it
|
|
417
|
+
missileTurnRate: 3, // guided-missile agility (rad/sec)
|
|
418
|
+
missileDamage: 30,
|
|
419
|
+
bombDamage: 45,
|
|
420
|
+
lockRange: 140, // max range to acquire a missile target (fallback when no radar)
|
|
421
|
+
lockConeDeg: 35, // half-angle of the forward cone missiles can lock within
|
|
422
|
+
// Gun-aiming reticle: a bore-line ring parented to the airframe you look THROUGH
|
|
423
|
+
// to aim the (straight-ahead, ballistic) cannon. 'on' (default) / 'off'.
|
|
424
|
+
reticle: 'on',
|
|
425
|
+
reticleRange: 120, // metres ahead the reticle ring sits on the gun bore line
|
|
259
426
|
};
|
|
260
427
|
// Read-only flight state
|
|
261
428
|
airspeed = 0;
|
|
@@ -281,10 +448,23 @@ export class B3dAircraft extends B3dControllable {
|
|
|
281
448
|
chaseDistance = 4.8; // chase distance behind
|
|
282
449
|
velocity = new BABYLON.Vector3(0, 0, 0);
|
|
283
450
|
_fwd = new BABYLON.Vector3(); // scratch: world nose direction (unit)
|
|
451
|
+
// Weapon cooldowns (seconds until ready) + edge-detect for the one-shot weapons.
|
|
452
|
+
_gunCd = 0;
|
|
453
|
+
_bombCd = 0;
|
|
454
|
+
_missileCd = 0;
|
|
455
|
+
_bombWas = false;
|
|
456
|
+
_missileWas = false;
|
|
284
457
|
// Fly-by-wire flight state (heading/pitch/bank/speed). Seeded from the spawned
|
|
285
458
|
// orientation on the first frame, then this controller owns the quaternion.
|
|
286
459
|
fbw = { heading: 0, pitch: 0, bank: 0, speed: 0 };
|
|
287
460
|
fbwSeeded = false;
|
|
461
|
+
// undefined = not yet resolved; null = no HUD / not the player.
|
|
462
|
+
_hud = undefined;
|
|
463
|
+
_hudMounted = false;
|
|
464
|
+
// The attached <tosi-b3d-radar> child (found once). undefined = unresolved,
|
|
465
|
+
// null = none. Drives the HUD radar traces and the missile's lock target.
|
|
466
|
+
_radar = undefined;
|
|
467
|
+
_reticleMesh = null;
|
|
288
468
|
meshNode = null;
|
|
289
469
|
meshesToDispose = [];
|
|
290
470
|
// Ground sampling is ONE raycast per frame, taken after the move and cached: the
|
|
@@ -387,8 +567,60 @@ export class B3dAircraft extends B3dControllable {
|
|
|
387
567
|
// ceiling you can be stalled but the thrust still goes forward.
|
|
388
568
|
this.vtolActive = attrs.vtolSpeed > 0 && fwdSpeed < attrs.vtolSpeed;
|
|
389
569
|
this.stalling = false;
|
|
570
|
+
// Drive a linked HUD (a <tosi-b3d-hud> sibling) when this is the player. Found
|
|
571
|
+
// once and cached; loosely typed so the aircraft doesn't depend on b3d-hud.
|
|
572
|
+
if (this._hud === undefined) {
|
|
573
|
+
this._hud =
|
|
574
|
+
attrs.player && this.owner
|
|
575
|
+
? this.owner.querySelector('tosi-b3d-hud')
|
|
576
|
+
: null;
|
|
577
|
+
}
|
|
578
|
+
if (this._hud != null) {
|
|
579
|
+
// Mount the HUD onto the canopy (in-scene) once, so it shows in a 3D cockpit
|
|
580
|
+
// and in VR — parented to the airframe just ahead of the pilot's eye, banking
|
|
581
|
+
// with the plane (not head-locked).
|
|
582
|
+
if (!this._hudMounted && this._hud.attachInScene != null) {
|
|
583
|
+
this._hudMounted = true;
|
|
584
|
+
this._hud.attachInScene(node, {
|
|
585
|
+
size: attrs.hudSize,
|
|
586
|
+
position: new BABYLON.Vector3(0, this.eyeHeight, this.cockpitForward + attrs.hudForward),
|
|
587
|
+
});
|
|
588
|
+
}
|
|
589
|
+
// In cockpit view the 3D canopy HUD is the HUD; the flat DOM overlay is for the
|
|
590
|
+
// chase view only when `hud-chase` opts in.
|
|
591
|
+
const inCockpit = this.cameraView === 'cockpit';
|
|
592
|
+
this._hud.setInSceneVisible?.(inCockpit);
|
|
593
|
+
const showHud = inCockpit || attrs.hudChase;
|
|
594
|
+
this._hud.setVisible(!inCockpit && attrs.hudChase);
|
|
595
|
+
if (showHud) {
|
|
596
|
+
const RAD = 180 / Math.PI;
|
|
597
|
+
this._hud.setMeter('speed', attrs.maxSpeed > 0 ? this.fbw.speed / attrs.maxSpeed : 0);
|
|
598
|
+
this._hud.setMeter('altitude', this.altitude / attrs.ceiling);
|
|
599
|
+
// Nose-up should slide the horizon down — flip here if it reads inverted.
|
|
600
|
+
this._hud.setHorizon(this.fbw.pitch * RAD, this.fbw.bank * RAD);
|
|
601
|
+
// Warnings on the graphical HUD: PULL UP flashes the bottom arc (ground
|
|
602
|
+
// below); STALL is text only (not directional).
|
|
603
|
+
const warnings = [];
|
|
604
|
+
if (this.pullUp)
|
|
605
|
+
warnings.push({ text: 'PULL UP', side: 'bottom' });
|
|
606
|
+
if (this.stalling)
|
|
607
|
+
warnings.push({ text: 'STALL' });
|
|
608
|
+
this._hud.setWarnings(warnings);
|
|
609
|
+
// health/energy: wired once the combat resource models drive the aircraft.
|
|
610
|
+
// Radar traces: surface the attached <tosi-b3d-radar>'s detected contacts on
|
|
611
|
+
// the HUD (the radar itself is UI-less). Faction → trace colour; the aircraft
|
|
612
|
+
// pose is the projection viewer.
|
|
613
|
+
this._pushRadarToHud(node);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
390
616
|
// === Apply velocity to position ===
|
|
391
617
|
node.position.addInPlaceFromFloats(vel.x * dt, vel.y * dt, vel.z * dt);
|
|
618
|
+
// Service ceiling: can't climb past it. Cap altitude and bleed the climb.
|
|
619
|
+
if (node.position.y > attrs.ceiling) {
|
|
620
|
+
node.position.y = attrs.ceiling;
|
|
621
|
+
if (vel.y > 0)
|
|
622
|
+
vel.y = 0;
|
|
623
|
+
}
|
|
392
624
|
// Ground contact. Clamp out of the terrain; once settled, behave like
|
|
393
625
|
// wheels — kill the downward bounce and apply rolling resistance so you can
|
|
394
626
|
// land, roll to a stop, and accelerate to take off again. (First cut — tune
|
|
@@ -416,6 +648,211 @@ export class B3dAircraft extends B3dControllable {
|
|
|
416
648
|
// fly-by-wire block above. Just refresh the ground-proximity pull-up warning.
|
|
417
649
|
this.altitude = node.position.y;
|
|
418
650
|
this.updatePullUp(node, groundDist);
|
|
651
|
+
// Weapons last, so shells spawn from this frame's muzzle position.
|
|
652
|
+
this.updateWeapons(input, dt);
|
|
653
|
+
}
|
|
654
|
+
// --- Weapons ---------------------------------------------------------------
|
|
655
|
+
// Cannon on held `shoot` (cadence-gated), bomb on `jump` (edge), missile on
|
|
656
|
+
// `aim` (edge) — all built on the pure combat toolkit (spawnProjectile /
|
|
657
|
+
// spawnMissile / warhead). Shells inherit the airframe's velocity so they lead
|
|
658
|
+
// naturally with your own motion.
|
|
659
|
+
updateWeapons(input, dt) {
|
|
660
|
+
if (isOff(this.weapons) || this.crashed || !this.meshNode)
|
|
661
|
+
return;
|
|
662
|
+
if (this.owner == null)
|
|
663
|
+
return;
|
|
664
|
+
this._gunCd -= dt;
|
|
665
|
+
this._bombCd -= dt;
|
|
666
|
+
this._missileCd -= dt;
|
|
667
|
+
if (input.shoot > 0.5 && this._gunCd <= 0)
|
|
668
|
+
this.fireGuns();
|
|
669
|
+
const bomb = input.jump > 0.5;
|
|
670
|
+
if (bomb && !this._bombWas && this._bombCd <= 0)
|
|
671
|
+
this.dropBomb();
|
|
672
|
+
this._bombWas = bomb;
|
|
673
|
+
const missile = input.aim > 0.5;
|
|
674
|
+
if (missile && !this._missileWas && this._missileCd <= 0)
|
|
675
|
+
this.fireMissile();
|
|
676
|
+
this._missileWas = missile;
|
|
677
|
+
}
|
|
678
|
+
// Scratch for the active camera's world-rotation (radar-trace projection viewer).
|
|
679
|
+
_camQuat = new BABYLON.Quaternion();
|
|
680
|
+
/** Push the attached radar's detected contacts onto the HUD as radar traces. */
|
|
681
|
+
_pushRadarToHud(_node) {
|
|
682
|
+
const radar = this.radar;
|
|
683
|
+
const hud = this._hud;
|
|
684
|
+
if (radar == null || hud?.setTraces == null)
|
|
685
|
+
return;
|
|
686
|
+
const cam = this.owner?.scene.activeCamera;
|
|
687
|
+
if (cam == null)
|
|
688
|
+
return;
|
|
689
|
+
const traces = [];
|
|
690
|
+
for (const t of radar.tracks) {
|
|
691
|
+
if (!t.detected)
|
|
692
|
+
continue;
|
|
693
|
+
traces.push({ pos: t.pos, kind: t.id.faction, locked: t.locked });
|
|
694
|
+
}
|
|
695
|
+
// The HUD projects these itself, onto its own quad (the cockpit combiner), by
|
|
696
|
+
// intersecting the eye→target ray with the glass — so blips land on the targets you
|
|
697
|
+
// actually see. We just hand it world positions + the eye.
|
|
698
|
+
hud.setTraces(traces, cam);
|
|
699
|
+
}
|
|
700
|
+
/** The attached `<tosi-b3d-radar>` child (found once), or null. */
|
|
701
|
+
get radar() {
|
|
702
|
+
if (this._radar === undefined) {
|
|
703
|
+
this._radar =
|
|
704
|
+
this.querySelector('tosi-b3d-radar') ?? null;
|
|
705
|
+
}
|
|
706
|
+
return this._radar;
|
|
707
|
+
}
|
|
708
|
+
/** The airframe's own meshes — the collision ray must skip these so a shell/bomb
|
|
709
|
+
* spawned at the belly (or the nose in a climb) never detonates on us. */
|
|
710
|
+
ownMeshes() {
|
|
711
|
+
if (this._ownMeshes == null && this.meshNode != null) {
|
|
712
|
+
const own = new Set();
|
|
713
|
+
if (this.meshNode instanceof BABYLON.AbstractMesh)
|
|
714
|
+
own.add(this.meshNode);
|
|
715
|
+
for (const child of this.meshNode.getChildMeshes())
|
|
716
|
+
own.add(child);
|
|
717
|
+
this._ownMeshes = own;
|
|
718
|
+
}
|
|
719
|
+
return this._ownMeshes ?? new Set();
|
|
720
|
+
}
|
|
721
|
+
/** World nose direction (unit) and a muzzle point `ahead` metres in front. */
|
|
722
|
+
muzzle(ahead, drop = 0) {
|
|
723
|
+
const node = this.meshNode;
|
|
724
|
+
node.getDirectionToRef(LOCAL_Z, this._fwd);
|
|
725
|
+
return new BABYLON.Vector3(node.position.x + this._fwd.x * ahead, node.position.y + this._fwd.y * ahead - drop, node.position.z + this._fwd.z * ahead);
|
|
726
|
+
}
|
|
727
|
+
/** Fire one cannon shell forward, inheriting the airframe's velocity. */
|
|
728
|
+
fireGuns() {
|
|
729
|
+
if (this.owner == null || !this.meshNode)
|
|
730
|
+
return;
|
|
731
|
+
const attrs = this;
|
|
732
|
+
this._gunCd = attrs.gunRate > 0 ? 1 / attrs.gunRate : 0;
|
|
733
|
+
const origin = this.muzzle(2.2); // sets this._fwd to the world nose direction
|
|
734
|
+
const dir = this._fwd.clone().normalize();
|
|
735
|
+
const ignore = (m) => this.ownMeshes().has(m);
|
|
736
|
+
spawnProjectile(this.owner, {
|
|
737
|
+
origin,
|
|
738
|
+
velocity: this.velocity.add(dir.scale(attrs.gunSpeed)),
|
|
739
|
+
warhead: this.gunWarhead,
|
|
740
|
+
params: { gravity: { x: 0, y: -9.81, z: 0 }, dragCoeff: 0.001, mass: 2 },
|
|
741
|
+
radius: 0.08,
|
|
742
|
+
color: '#fff2a0',
|
|
743
|
+
maxLifetime: 3,
|
|
744
|
+
ignore,
|
|
745
|
+
});
|
|
746
|
+
}
|
|
747
|
+
/** Drop a bomb — it inherits the airframe's velocity and falls under gravity.
|
|
748
|
+
* Released a little below the belly and set to ignore our own geometry, so a bank
|
|
749
|
+
* doesn't detonate it on the wing. */
|
|
750
|
+
dropBomb() {
|
|
751
|
+
if (this.owner == null || !this.meshNode)
|
|
752
|
+
return;
|
|
753
|
+
const attrs = this;
|
|
754
|
+
this._bombCd = 0.6;
|
|
755
|
+
spawnProjectile(this.owner, {
|
|
756
|
+
origin: this.muzzle(0, 1.2), // clear of the belly
|
|
757
|
+
velocity: this.velocity.clone(),
|
|
758
|
+
warhead: { damage: attrs.bombDamage, fullRadius: 2, blastRadius: 6 },
|
|
759
|
+
params: { gravity: { x: 0, y: -9.81, z: 0 }, dragCoeff: 0.002, mass: 4 },
|
|
760
|
+
radius: 0.25,
|
|
761
|
+
color: '#404040',
|
|
762
|
+
maxLifetime: 12,
|
|
763
|
+
ignore: (m) => this.ownMeshes().has(m),
|
|
764
|
+
});
|
|
765
|
+
}
|
|
766
|
+
/**
|
|
767
|
+
* Fire a guided missile at your **nearest radar lock** (no lock ⇒ it goes ballistic
|
|
768
|
+
* straight ahead). With a `<tosi-b3d-radar>` attached the lock comes from the radar;
|
|
769
|
+
* without one it falls back to the legacy forward-cone acquire. The missile carries a
|
|
770
|
+
* small radar signature (profile 0.25, friendly) so it shows on the HUD.
|
|
771
|
+
*/
|
|
772
|
+
fireMissile() {
|
|
773
|
+
if (this.owner == null || !this.meshNode)
|
|
774
|
+
return;
|
|
775
|
+
const attrs = this;
|
|
776
|
+
this._missileCd = 0.8;
|
|
777
|
+
const origin = this.muzzle(1.6);
|
|
778
|
+
const dir = this._fwd.clone().normalize();
|
|
779
|
+
const spec = {
|
|
780
|
+
damage: attrs.missileDamage,
|
|
781
|
+
fullRadius: 1.5,
|
|
782
|
+
blastRadius: 4,
|
|
783
|
+
};
|
|
784
|
+
const ignore = (m) => this.ownMeshes().has(m);
|
|
785
|
+
// Prefer the radar's nearest lock; else fall back to the cone acquire (no radar).
|
|
786
|
+
const target = this.radar != null
|
|
787
|
+
? this.radar.nearestLockMesh()
|
|
788
|
+
: this.acquireTarget(origin, dir, attrs.lockRange, attrs.lockConeDeg);
|
|
789
|
+
const radarSig = { profile: 0.25, faction: 'friendly' };
|
|
790
|
+
if (target != null) {
|
|
791
|
+
spawnMissile(this.owner, {
|
|
792
|
+
origin,
|
|
793
|
+
target,
|
|
794
|
+
speed: attrs.missileSpeed,
|
|
795
|
+
turnRate: attrs.missileTurnRate,
|
|
796
|
+
warhead: spec,
|
|
797
|
+
direction: dir,
|
|
798
|
+
radius: 0.18,
|
|
799
|
+
ignore,
|
|
800
|
+
radar: radarSig,
|
|
801
|
+
// Inherit the airframe's world velocity so the missile doesn't drop behind,
|
|
802
|
+
// then thrust up to cruise.
|
|
803
|
+
inheritVelocity: {
|
|
804
|
+
x: this.velocity.x,
|
|
805
|
+
y: this.velocity.y,
|
|
806
|
+
z: this.velocity.z,
|
|
807
|
+
},
|
|
808
|
+
accel: attrs.missileAccel,
|
|
809
|
+
boostTime: attrs.missileBoost,
|
|
810
|
+
});
|
|
811
|
+
}
|
|
812
|
+
else {
|
|
813
|
+
// No lock — fire it straight ahead as an unguided rocket.
|
|
814
|
+
spawnProjectile(this.owner, {
|
|
815
|
+
origin,
|
|
816
|
+
velocity: this.velocity.add(dir.scale(attrs.missileSpeed)),
|
|
817
|
+
warhead: spec,
|
|
818
|
+
params: { gravity: { x: 0, y: 0, z: 0 }, dragCoeff: 0, mass: 1 },
|
|
819
|
+
radius: 0.18,
|
|
820
|
+
color: '#ff6644',
|
|
821
|
+
maxLifetime: 8,
|
|
822
|
+
ignore,
|
|
823
|
+
radar: radarSig,
|
|
824
|
+
});
|
|
825
|
+
}
|
|
826
|
+
}
|
|
827
|
+
get gunWarhead() {
|
|
828
|
+
return {
|
|
829
|
+
damage: this.gunDamage,
|
|
830
|
+
fullRadius: 0.5,
|
|
831
|
+
blastRadius: 1.5,
|
|
832
|
+
};
|
|
833
|
+
}
|
|
834
|
+
/** Nearest destroyable within `range` and inside the forward cone (or null). */
|
|
835
|
+
acquireTarget(origin, fwd, range, coneDeg) {
|
|
836
|
+
const minCos = Math.cos((coneDeg * Math.PI) / 180);
|
|
837
|
+
let best = null;
|
|
838
|
+
let bestDist = Infinity;
|
|
839
|
+
const els = this.owner.querySelectorAll('tosi-b3d-destroyable');
|
|
840
|
+
for (const el of Array.from(els)) {
|
|
841
|
+
const mesh = el.mesh;
|
|
842
|
+
if (mesh == null || mesh.isDisposed())
|
|
843
|
+
continue;
|
|
844
|
+
const to = mesh.absolutePosition.subtract(origin);
|
|
845
|
+
const dist = to.length();
|
|
846
|
+
if (dist > range || dist < 1e-3)
|
|
847
|
+
continue;
|
|
848
|
+
if (BABYLON.Vector3.Dot(to.scale(1 / dist), fwd) < minCos)
|
|
849
|
+
continue;
|
|
850
|
+
if (dist < bestDist) {
|
|
851
|
+
bestDist = dist;
|
|
852
|
+
best = mesh;
|
|
853
|
+
}
|
|
854
|
+
}
|
|
855
|
+
return best;
|
|
419
856
|
}
|
|
420
857
|
/** Distance from the aircraft origin down to the nearest ground: the lower of
|
|
421
858
|
* any terrain collider the raycast hits and the configured ground plane. */
|
|
@@ -546,6 +983,37 @@ export class B3dAircraft extends B3dControllable {
|
|
|
546
983
|
}
|
|
547
984
|
this.lastUpdate = Date.now();
|
|
548
985
|
owner.scene.registerBeforeRender(this._update);
|
|
986
|
+
this._createReticle(owner);
|
|
987
|
+
}
|
|
988
|
+
/**
|
|
989
|
+
* Build the gun-aiming reticle: a ring parented to the airframe, sitting
|
|
990
|
+
* `reticleRange` metres ahead on the cannon's bore line with its hole facing
|
|
991
|
+
* forward — you fly the target INTO the ring to aim the straight-ahead guns. It
|
|
992
|
+
* rides the airframe (and so the XR rig) automatically. Player + `reticle:'on'`
|
|
993
|
+
* + armed only.
|
|
994
|
+
*/
|
|
995
|
+
_createReticle(owner) {
|
|
996
|
+
const attrs = this;
|
|
997
|
+
if (this.meshNode == null ||
|
|
998
|
+
!attrs.player ||
|
|
999
|
+
isOff(attrs.reticle) ||
|
|
1000
|
+
isOff(attrs.weapons)) {
|
|
1001
|
+
return;
|
|
1002
|
+
}
|
|
1003
|
+
const range = attrs.reticleRange;
|
|
1004
|
+
const ring = BABYLON.MeshBuilder.CreateTorus('gun-reticle', { diameter: range * 0.05, thickness: range * 0.006, tessellation: 24 }, owner.scene);
|
|
1005
|
+
// Default torus hole faces +Y; tip it so the hole faces +Z (the bore/nose).
|
|
1006
|
+
ring.rotation.x = Math.PI / 2;
|
|
1007
|
+
ring.position.set(0, 0, range);
|
|
1008
|
+
ring.parent = this.meshNode;
|
|
1009
|
+
ring.isPickable = false;
|
|
1010
|
+
ring.receiveShadows = false;
|
|
1011
|
+
ring.__isReticle = true;
|
|
1012
|
+
const mat = new BABYLON.StandardMaterial('gun-reticle-mat', owner.scene);
|
|
1013
|
+
mat.emissiveColor = BABYLON.Color3.FromHexString('#ff5030');
|
|
1014
|
+
mat.disableLighting = true;
|
|
1015
|
+
ring.material = mat;
|
|
1016
|
+
this._reticleMesh = ring;
|
|
549
1017
|
}
|
|
550
1018
|
chaseCamera = null;
|
|
551
1019
|
cockpitCamera = null;
|
|
@@ -616,7 +1084,13 @@ export class B3dAircraft extends B3dControllable {
|
|
|
616
1084
|
this.libraryNode.dispose();
|
|
617
1085
|
this.libraryNode = null;
|
|
618
1086
|
}
|
|
1087
|
+
if (this._reticleMesh) {
|
|
1088
|
+
this._reticleMesh.material?.dispose();
|
|
1089
|
+
this._reticleMesh.dispose();
|
|
1090
|
+
this._reticleMesh = null;
|
|
1091
|
+
}
|
|
619
1092
|
this.meshNode = null;
|
|
1093
|
+
this._radar = undefined;
|
|
620
1094
|
this.inputProvider = null;
|
|
621
1095
|
super.sceneDispose();
|
|
622
1096
|
}
|
package/dist/b3d-aircraft.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"b3d-aircraft.js","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"b3d-aircraft.js","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"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"}
|