tosijs-3d 0.3.0 → 0.4.0

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.
Files changed (80) hide show
  1. package/dist/asset-url.d.ts +10 -0
  2. package/dist/asset-url.d.ts.map +1 -0
  3. package/dist/asset-url.js +37 -0
  4. package/dist/asset-url.js.map +1 -0
  5. package/dist/b3d-aircraft.d.ts +40 -0
  6. package/dist/b3d-aircraft.d.ts.map +1 -1
  7. package/dist/b3d-aircraft.js +346 -2
  8. package/dist/b3d-aircraft.js.map +1 -1
  9. package/dist/b3d-biped.d.ts +16 -0
  10. package/dist/b3d-biped.d.ts.map +1 -1
  11. package/dist/b3d-biped.js +80 -1
  12. package/dist/b3d-biped.js.map +1 -1
  13. package/dist/b3d-controllable.d.ts.map +1 -1
  14. package/dist/b3d-controllable.js +6 -1
  15. package/dist/b3d-controllable.js.map +1 -1
  16. package/dist/b3d-controller.d.ts +38 -0
  17. package/dist/b3d-controller.d.ts.map +1 -0
  18. package/dist/b3d-controller.js +64 -0
  19. package/dist/b3d-controller.js.map +1 -0
  20. package/dist/b3d-destroyable.d.ts +39 -7
  21. package/dist/b3d-destroyable.d.ts.map +1 -1
  22. package/dist/b3d-destroyable.js +187 -50
  23. package/dist/b3d-destroyable.js.map +1 -1
  24. package/dist/b3d-hud.d.ts +92 -0
  25. package/dist/b3d-hud.d.ts.map +1 -0
  26. package/dist/b3d-hud.js +282 -0
  27. package/dist/b3d-hud.js.map +1 -0
  28. package/dist/b3d-launcher.d.ts +152 -0
  29. package/dist/b3d-launcher.d.ts.map +1 -0
  30. package/dist/b3d-launcher.js +454 -0
  31. package/dist/b3d-launcher.js.map +1 -0
  32. package/dist/b3d-loader.d.ts +28 -0
  33. package/dist/b3d-loader.d.ts.map +1 -1
  34. package/dist/b3d-loader.js +86 -1
  35. package/dist/b3d-loader.js.map +1 -1
  36. package/dist/b3d-star-system.d.ts.map +1 -1
  37. package/dist/b3d-star-system.js +3 -1
  38. package/dist/b3d-star-system.js.map +1 -1
  39. package/dist/b3d-turret.d.ts +73 -0
  40. package/dist/b3d-turret.d.ts.map +1 -0
  41. package/dist/b3d-turret.js +296 -0
  42. package/dist/b3d-turret.js.map +1 -0
  43. package/dist/b3d-warhead.d.ts +39 -0
  44. package/dist/b3d-warhead.d.ts.map +1 -0
  45. package/dist/b3d-warhead.js +231 -0
  46. package/dist/b3d-warhead.js.map +1 -0
  47. package/dist/ballistics.d.ts +11 -0
  48. package/dist/ballistics.d.ts.map +1 -1
  49. package/dist/ballistics.js +35 -0
  50. package/dist/ballistics.js.map +1 -1
  51. package/dist/destroyable-behavior.d.ts +66 -0
  52. package/dist/destroyable-behavior.d.ts.map +1 -0
  53. package/dist/destroyable-behavior.js +174 -0
  54. package/dist/destroyable-behavior.js.map +1 -0
  55. package/dist/guidance.d.ts +49 -0
  56. package/dist/guidance.d.ts.map +1 -0
  57. package/dist/guidance.js +128 -0
  58. package/dist/guidance.js.map +1 -0
  59. package/dist/hud-math.d.ts +56 -0
  60. package/dist/hud-math.d.ts.map +1 -0
  61. package/dist/hud-math.js +102 -0
  62. package/dist/hud-math.js.map +1 -0
  63. package/dist/hud.d.ts +47 -0
  64. package/dist/hud.d.ts.map +1 -0
  65. package/dist/hud.js +285 -0
  66. package/dist/hud.js.map +1 -0
  67. package/dist/iife.js +1151 -1151
  68. package/dist/iife.js.map +27 -17
  69. package/dist/index.d.ts +15 -1
  70. package/dist/index.d.ts.map +1 -1
  71. package/dist/index.js +14 -1
  72. package/dist/index.js.map +1 -1
  73. package/dist/tosi-b3d.d.ts +9 -0
  74. package/dist/tosi-b3d.d.ts.map +1 -1
  75. package/dist/tosi-b3d.js +45 -6
  76. package/dist/tosi-b3d.js.map +1 -1
  77. package/dist/virtual-gamepad.d.ts.map +1 -1
  78. package/dist/virtual-gamepad.js +8 -0
  79. package/dist/virtual-gamepad.js.map +1 -1
  80. package/package.json +2 -1
@@ -0,0 +1,10 @@
1
+ /** Set the base URL prepended to logical asset paths (e.g. `https://cdn.tosijs.net`). */
2
+ export declare function setAssetBase(url: string): void;
3
+ /** The current asset base (`''` = resolve locally). */
4
+ export declare function getAssetBase(): string;
5
+ /**
6
+ * Resolve a logical asset path against the base. Absolute URLs (`http(s)://`,
7
+ * `data:`, `blob:`) pass through unchanged.
8
+ */
9
+ export declare function assetUrl(path: string): string;
10
+ //# sourceMappingURL=asset-url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-url.d.ts","sourceRoot":"","sources":["../src/asset-url.ts"],"names":[],"mappings":"AAqBA,yFAAyF;AACzF,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE9C;AAED,uDAAuD;AACvD,wBAAgB,YAAY,IAAI,MAAM,CAErC;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG7C"}
@@ -0,0 +1,37 @@
1
+ /*#
2
+ # asset-url
3
+
4
+ A tiny indirection for referencing hosted blobs (models, textures, audio, …) by a
5
+ LOGICAL path, so demos/consumers aren't littered with a hostname and can retarget the
6
+ host in one place. `assetUrl('kenney/vehicles/car.glb')` resolves against a base set
7
+ once via `setAssetBase(...)`; the base defaults to empty, so paths resolve locally
8
+ (served from `static/`) for tests and offline dev. Already-absolute URLs
9
+ (`http(s)://`, `data:`, `blob:`) pass through untouched.
10
+
11
+ ```js
12
+ import { setAssetBase, assetUrl, b3dLoader } from 'tosijs-3d'
13
+
14
+ setAssetBase('https://cdn.tosijs.net') // once, e.g. in demo/site.ts
15
+ b3dLoader({ url: assetUrl('kenney/vehicles/car.glb') })
16
+ ```
17
+ */
18
+ /*{ "parent": "Core" }*/
19
+ let base = '';
20
+ /** Set the base URL prepended to logical asset paths (e.g. `https://cdn.tosijs.net`). */
21
+ export function setAssetBase(url) {
22
+ base = url.replace(/\/+$/, '');
23
+ }
24
+ /** The current asset base (`''` = resolve locally). */
25
+ export function getAssetBase() {
26
+ return base;
27
+ }
28
+ /**
29
+ * Resolve a logical asset path against the base. Absolute URLs (`http(s)://`,
30
+ * `data:`, `blob:`) pass through unchanged.
31
+ */
32
+ export function assetUrl(path) {
33
+ if (/^(https?:)?\/\//i.test(path) || /^(data|blob):/i.test(path))
34
+ return path;
35
+ return `${base}/${path.replace(/^\/+/, '')}`;
36
+ }
37
+ //# sourceMappingURL=asset-url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asset-url.js","sourceRoot":"","sources":["../src/asset-url.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;EAgBE;AACF,wBAAwB;AAExB,IAAI,IAAI,GAAG,EAAE,CAAA;AAEb,yFAAyF;AACzF,MAAM,UAAU,YAAY,CAAC,GAAW;IACtC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAA;AAChC,CAAC;AAED,uDAAuD;AACvD,MAAM,UAAU,YAAY;IAC1B,OAAO,IAAI,CAAA;AACb,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,QAAQ,CAAC,IAAY;IACnC,IAAI,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC7E,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,EAAE,CAAA;AAC9C,CAAC"}
@@ -10,6 +10,10 @@ export declare class B3dAircraft extends B3dControllable {
10
10
  meshName: string;
11
11
  player: boolean;
12
12
  enterable: boolean;
13
+ ceiling: number;
14
+ hudChase: boolean;
15
+ hudSize: number;
16
+ hudForward: number;
13
17
  maxSpeed: number;
14
18
  afterburnerSpeed: number;
15
19
  acceleration: number;
@@ -17,6 +21,16 @@ export declare class B3dAircraft extends B3dControllable {
17
21
  hoverCeiling: number;
18
22
  groundY: number;
19
23
  crashSpeed: number;
24
+ weapons: string;
25
+ gunRate: number;
26
+ gunSpeed: number;
27
+ gunDamage: number;
28
+ missileSpeed: number;
29
+ missileTurnRate: number;
30
+ missileDamage: number;
31
+ bombDamage: number;
32
+ lockRange: number;
33
+ lockConeDeg: number;
20
34
  x: number;
21
35
  y: number;
22
36
  z: number;
@@ -48,8 +62,17 @@ export declare class B3dAircraft extends B3dControllable {
48
62
  chaseDistance: number;
49
63
  private velocity;
50
64
  private _fwd;
65
+ private _gunCd;
66
+ private _bombCd;
67
+ private _missileCd;
68
+ private _bombWas;
69
+ private _missileWas;
51
70
  private fbw;
52
71
  private fbwSeeded;
72
+ ceiling: number;
73
+ hudChase: boolean;
74
+ private _hud;
75
+ private _hudMounted;
53
76
  private meshNode;
54
77
  private meshesToDispose;
55
78
  private _lastGroundDist;
@@ -59,6 +82,23 @@ export declare class B3dAircraft extends B3dControllable {
59
82
  private libraryNode;
60
83
  getCameraTarget(): BABYLON.Node | null;
61
84
  applyInput(input: ControlInput, dt: number): void;
85
+ private updateWeapons;
86
+ /** The airframe's own meshes — the collision ray must skip these so a shell/bomb
87
+ * spawned at the belly (or the nose in a climb) never detonates on us. */
88
+ private ownMeshes;
89
+ /** World nose direction (unit) and a muzzle point `ahead` metres in front. */
90
+ private muzzle;
91
+ /** Fire one cannon shell forward, inheriting the airframe's velocity. */
92
+ fireGuns(): void;
93
+ /** Drop a bomb — it inherits the airframe's velocity and falls under gravity.
94
+ * Released a little below the belly and set to ignore our own geometry, so a bank
95
+ * doesn't detonate it on the wing. */
96
+ dropBomb(): void;
97
+ /** Fire a guided missile at the nearest target in the forward cone (else dumb). */
98
+ fireMissile(): void;
99
+ private get gunWarhead();
100
+ /** Nearest destroyable within `range` and inside the forward cone (or null). */
101
+ private acquireTarget;
62
102
  /** Distance from the aircraft origin down to the nearest ground: the lower of
63
103
  * any terrain collider the raycast hits and the configured ground plane. */
64
104
  private groundDistance;
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"AAoMA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AA0CnD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,YAAY,2CAAoB;IAEhC,MAAM,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;MA2BpB;IAGD,QAAQ,SAAI;IACZ,QAAQ,SAAI;IACZ,aAAa,SAAI;IACjB,UAAU,UAAQ;IAClB,QAAQ,UAAQ;IAChB,MAAM,UAAQ;IACd,QAAQ,UAAQ;IAChB,OAAO,UAAQ;IACf;kEAC8D;IAC9D,UAAU,EAAE,OAAO,GAAG,SAAS,CAAU;IACzC,OAAO,CAAC,cAAc,CAAQ;IAE9B;;;wEAGoE;IACpE,SAAS,SAAM;IACf,cAAc,SAAM;IACpB,cAAc,SAAM;IACpB,WAAW,SAAM;IACjB,aAAa,SAAM;IAEnB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,IAAI,CAAwB;IAGpC,OAAO,CAAC,GAAG,CAA8D;IACzE,OAAO,CAAC,SAAS,CAAQ;IACzB,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,eAAe,CAAqB;IAM5C,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,IAAI,CAIX;IACD,OAAO,CAAC,UAAU,CAAyC;IAG3D,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,WAAW,CAA4B;IAE/C,eAAe,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI;IAItC,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM;IAgJ1C;gFAC4E;IAC5E,OAAO,CAAC,cAAc;IAMtB,+EAA+E;IAC/E,OAAO,CAAC,KAAK;IAOb;;qDAEiD;IACjD,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;IASpB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IAW3C,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,SAAS;IAgCjB,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAkC;IAEvD,iBAAiB;IAoDjB;;mFAE+E;IAC/E,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS;IASvC,YAAY;CAwBb;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA"}
1
+ {"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"AAkTA,OAAO,KAAK,OAAO,MAAM,iBAAiB,CAAA;AAC1C,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAyDnD,qBAAa,WAAY,SAAQ,eAAe;IAC9C,YAAY,2CAAoB;IAEhC,MAAM,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MA+CpB;IAGD,QAAQ,SAAI;IACZ,QAAQ,SAAI;IACZ,aAAa,SAAI;IACjB,UAAU,UAAQ;IAClB,QAAQ,UAAQ;IAChB,MAAM,UAAQ;IACd,QAAQ,UAAQ;IAChB,OAAO,UAAQ;IACf;kEAC8D;IAC9D,UAAU,EAAE,OAAO,GAAG,SAAS,CAAU;IACzC,OAAO,CAAC,cAAc,CAAQ;IAE9B;;;wEAGoE;IACpE,SAAS,SAAM;IACf,cAAc,SAAM;IACpB,cAAc,SAAM;IACpB,WAAW,SAAM;IACjB,aAAa,SAAM;IAEnB,OAAO,CAAC,QAAQ,CAA+B;IAC/C,OAAO,CAAC,IAAI,CAAwB;IAEpC,OAAO,CAAC,MAAM,CAAI;IAClB,OAAO,CAAC,OAAO,CAAI;IACnB,OAAO,CAAC,UAAU,CAAI;IACtB,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,WAAW,CAAQ;IAG3B,OAAO,CAAC,GAAG,CAA8D;IACzE,OAAO,CAAC,SAAS,CAAQ;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IAEzB,OAAO,CAAC,IAAI,CAAwC;IACpD,OAAO,CAAC,WAAW,CAAQ;IAC3B,OAAO,CAAC,QAAQ,CAAqC;IACrD,OAAO,CAAC,eAAe,CAAqB;IAM5C,OAAO,CAAC,eAAe,CAAW;IAClC,OAAO,CAAC,IAAI,CAIX;IACD,OAAO,CAAC,UAAU,CAAyC;IAG3D,OAAO,CAAC,eAAe,CAAM;IAC7B,OAAO,CAAC,WAAW,CAA4B;IAE/C,eAAe,IAAI,OAAO,CAAC,IAAI,GAAG,IAAI;IAItC,UAAU,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,MAAM;IA+M1C,OAAO,CAAC,aAAa;IAkBrB;8EAC0E;IAC1E,OAAO,CAAC,SAAS;IAUjB,8EAA8E;IAC9E,OAAO,CAAC,MAAM;IAUd,yEAAyE;IACzE,QAAQ,IAAI,IAAI;IAmBhB;;0CAEsC;IACtC,QAAQ,IAAI,IAAI;IAgBhB,mFAAmF;IACnF,WAAW,IAAI,IAAI;IA4CnB,OAAO,KAAK,UAAU,GAMrB;IAED,gFAAgF;IAChF,OAAO,CAAC,aAAa;IAyBrB;gFAC4E;IAC5E,OAAO,CAAC,cAAc;IAMtB,+EAA+E;IAC/E,OAAO,CAAC,KAAK;IAOb;;qDAEiD;IACjD,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,YAAY;IASpB,UAAU,CAAC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK;IAW3C,OAAO,CAAC,WAAW;IAgBnB,OAAO,CAAC,eAAe;IAwCvB,OAAO,CAAC,SAAS;IAgCjB,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAkC;IAEvD,iBAAiB;IAoDjB;;mFAE+E;IAC/E,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS;IASvC,YAAY;CAwBb;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA"}
@@ -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,84 @@ tosi-b3d { width: 100%; height: 100%; }
140
143
  }
141
144
  ```
142
145
 
146
+ ## Combat — shoot down the drones
147
+
148
+ The aircraft is armed (see [Weapons](#weapons-the-combat-slice)). Fly at the drifting
149
+ **aerial drones** and shoot them down. Each takes a short cannon burst or one missile —
150
+ watch a drone glow **redder as it takes damage** (the [destroyable](?b3d-destroyable.ts)
151
+ damage readout), then explode. The **kills counter** (top-right) ticks up as they die,
152
+ and missiles **lock the nearest drone in front of you**.
153
+
154
+ **Keys:** `Space` / right-Shift = **guns**, `LShift` = **missile**, `F` = **bomb**.
155
+ (Fly with W/S pitch, A/D bank, R/Q throttle.)
156
+
157
+ ```js
158
+ import { b3d, b3dAircraft, b3dHud, b3dLibrary, b3dDestroyable, b3dLight, b3dSun, b3dSkybox, b3dGround, gameController, inputFocus } from 'tosijs-3d'
159
+ import { elements } from 'tosijs'
160
+ const { div } = elements
161
+
162
+ const aircraft = b3dAircraft({
163
+ library: 'vehicles', meshName: 'scout',
164
+ player: true, y: 0, vtolSpeed: 6, maxSpeed: 55,
165
+ })
166
+
167
+ // Big, low-HP drones spread across the takeoff heading (+Z), at cruise height. capacity
168
+ // 6 ≈ one cannon burst or one missile — so a hit obviously registers and kills. They
169
+ // explode and fire a small death-blast, so a tight formation chain-reacts.
170
+ const drones = []
171
+ for (let i = 0; i < 12; i++) {
172
+ drones.push(b3dDestroyable({
173
+ meshName: 'drone', size: 2.4, color: '#d05050', capacity: 6,
174
+ x: (i % 4) * 9 - 13.5, y: 12 + (i % 3) * 5, z: 45 + Math.floor(i / 4) * 22,
175
+ explode: 'on', explodeForce: 8,
176
+ deathBlast: 'on', blastDamage: 10, blastFullRadius: 2, blastRadius: 6,
177
+ }))
178
+ }
179
+
180
+ const kills = div({ class: 'kills' }, 'Drones down: 0 / 12')
181
+ let down = 0
182
+
183
+ const scene = b3d(
184
+ {
185
+ gamepad: true,
186
+ sceneCreated(el) {
187
+ // Prove damage→death: count the bubbling `destroyed` events.
188
+ el.addEventListener('destroyed', () => {
189
+ down += 1
190
+ kills.textContent = `Drones down: ${down} / 12`
191
+ })
192
+ // Gently drift the drones so they move but stay very hittable.
193
+ let t = 0
194
+ el.scene.onBeforeRenderObservable.add(() => {
195
+ t += el.scene.getEngine().getDeltaTime() / 1000
196
+ drones.forEach((d, i) => {
197
+ if (d.dead) return
198
+ d.x += Math.sin(t * 0.3 + i) * 0.02
199
+ d.y += Math.sin(t * 0.6 + i * 2) * 0.01
200
+ })
201
+ })
202
+ },
203
+ },
204
+ b3dLight({ y: 1, intensity: 0.5 }),
205
+ b3dSun({ x: -0.6, y: -1, z: -0.4, intensity: 0.9, shadowTextureSize: 2048, shadowMaxZ: 300 }),
206
+ b3dSkybox({ timeOfDay: 10 }),
207
+ b3dGround({ meshName: 'ground_nocast', width: 500, height: 500, color: '#7d9b6e' }),
208
+ b3dLibrary({ url: '/test-2.glb', type: 'vehicles' }),
209
+ b3dHud({}),
210
+ ...drones,
211
+ inputFocus(gameController(), aircraft),
212
+ )
213
+ preview.append(scene, kills)
214
+ ```
215
+ ```css
216
+ tosi-b3d { width: 100%; height: 100%; }
217
+ .kills {
218
+ position: absolute; top: 10px; right: 10px; z-index: 10;
219
+ padding: 6px 12px; border-radius: 4px;
220
+ background: rgba(0, 0, 0, 0.55); color: #ffcf6a; font: 14px monospace;
221
+ }
222
+ ```
223
+
143
224
  ## Flight model
144
225
 
145
226
  You're in PLANE mode (trigger = forward thrust) if you're fast enough (`vtolSpeed`)
@@ -178,6 +259,35 @@ lift/throttle (the dual-purpose axis above), right stick Y = camera zoom.
178
259
  | `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
260
  | `groundY` | `0` | Assumed ground-plane height (a floor in addition to any terrain colliders) |
180
261
  | `crashSpeed` | `8` | Vertical impact speed (m/s) above which a ground contact is a crash |
262
+ | `hudChase` | `false` | Show the flat DOM HUD overlay in chase view (cockpit uses the in-scene HUD) |
263
+ | `hudSize` | `0.7` | In-cockpit HUD plane size (metres) |
264
+ | `hudForward` | `1.6` | How far ahead of the pilot's eye the HUD floats (metres) |
265
+ | `weapons` | `'on'` | `'off'` disarms all weapons |
266
+ | `gunRate` | `9` | Cannon shots/sec while `shoot` is held |
267
+ | `gunSpeed` | `130` | Cannon muzzle speed (added to airspeed) |
268
+ | `gunDamage` | `8` | Per-shell warhead full damage |
269
+ | `missileSpeed` | `55` | Guided-missile cruise speed |
270
+ | `missileTurnRate` | `3` | Guided-missile agility (rad/sec) |
271
+ | `missileDamage` | `30` | Missile warhead full damage |
272
+ | `bombDamage` | `45` | Bomb warhead full damage |
273
+ | `lockRange` | `140` | Max range to acquire a missile target |
274
+ | `lockConeDeg` | `35` | Half-angle of the forward cone missiles lock within |
275
+
276
+ ## Weapons (the combat slice)
277
+
278
+ Built on the pure combat toolkit ([destroyable](?b3d-destroyable.ts) /
279
+ [warhead](?b3d-warhead.ts) / [launcher](?b3d-launcher.ts) / [guidance](?guidance.ts)).
280
+ Shells inherit the airframe's velocity, so your own motion leads the shot. Any
281
+ [b3d-destroyable](?b3d-destroyable.ts) in the scene takes the damage.
282
+
283
+ | Control (default map) | Weapon |
284
+ | --- | --- |
285
+ | **Guns** — right bumper / A (held) | Cannon: fast ballistic shells, small blast |
286
+ | **Bomb** — B (tap) | Falls under gravity with your forward momentum; big blast |
287
+ | **Missile** — left bumper (tap) | Homes on the nearest target in the forward cone (else fires straight as a dumb rocket) |
288
+
289
+ `fireGuns()`, `dropBomb()`, and `fireMissile()` are also callable directly (e.g. for
290
+ an AI pilot). Set `weapons="off"` to disarm.
181
291
 
182
292
  ## API (read-only properties for HUD binding)
183
293
 
@@ -197,7 +307,8 @@ import * as BABYLON from '@babylonjs/core';
197
307
  import { B3dControllable } from './b3d-controllable';
198
308
  import { aircraftMapping } from './virtual-gamepad';
199
309
  import { flyByWireStep, targetVelocity, chaseVelocity, } from './fly-by-wire';
200
- import { placeOnSurface, boundingBottomOffset } from './b3d-utils';
310
+ import { placeOnSurface, boundingBottomOffset, isOff } from './b3d-utils';
311
+ import { spawnProjectile, spawnMissile } from './b3d-launcher';
201
312
  // Small gap kept between the model's belly and the ground.
202
313
  const GROUND_SEPARATION = 0.05;
203
314
  const DEG2RAD = Math.PI / 180;
@@ -236,6 +347,15 @@ export class B3dAircraft extends B3dControllable {
236
347
  meshName: '',
237
348
  player: false,
238
349
  enterable: false,
350
+ // Service ceiling (m): the aircraft can't climb past it, and it reads full on
351
+ // a linked HUD's altitude gauge.
352
+ ceiling: 300,
353
+ // Show the HUD in the chase view too (default: cockpit view only).
354
+ hudChase: false,
355
+ // In-cockpit HUD plane placement (see b3d-hud attachInScene): its size in metres
356
+ // and how far ahead of the pilot's eye it floats. Tune to taste per airframe.
357
+ hudSize: 0.7,
358
+ hudForward: 1.6,
239
359
  maxSpeed: 50,
240
360
  // Hard speed ceiling while the throttle is held past maxSpeed (afterburner).
241
361
  // Release and it bleeds back to maxSpeed. ≤ maxSpeed disables afterburner.
@@ -256,6 +376,17 @@ export class B3dAircraft extends B3dControllable {
256
376
  // Vertical impact speed (m/s) above which a ground contact is a crash, not
257
377
  // a landing.
258
378
  crashSpeed: 8,
379
+ // --- Weapons (the combat slice; see COMBAT-DESIGN.md). 'off' to disarm. ---
380
+ weapons: 'on',
381
+ gunRate: 9, // cannon shots per second (held `shoot`)
382
+ gunSpeed: 130, // muzzle speed of cannon shells (added to airspeed)
383
+ gunDamage: 8, // per-shell warhead full damage
384
+ missileSpeed: 55, // guided-missile cruise speed
385
+ missileTurnRate: 3, // guided-missile agility (rad/sec)
386
+ missileDamage: 30,
387
+ bombDamage: 45,
388
+ lockRange: 140, // max range to acquire a missile target
389
+ lockConeDeg: 35, // half-angle of the forward cone missiles can lock within
259
390
  };
260
391
  // Read-only flight state
261
392
  airspeed = 0;
@@ -281,10 +412,19 @@ export class B3dAircraft extends B3dControllable {
281
412
  chaseDistance = 4.8; // chase distance behind
282
413
  velocity = new BABYLON.Vector3(0, 0, 0);
283
414
  _fwd = new BABYLON.Vector3(); // scratch: world nose direction (unit)
415
+ // Weapon cooldowns (seconds until ready) + edge-detect for the one-shot weapons.
416
+ _gunCd = 0;
417
+ _bombCd = 0;
418
+ _missileCd = 0;
419
+ _bombWas = false;
420
+ _missileWas = false;
284
421
  // Fly-by-wire flight state (heading/pitch/bank/speed). Seeded from the spawned
285
422
  // orientation on the first frame, then this controller owns the quaternion.
286
423
  fbw = { heading: 0, pitch: 0, bank: 0, speed: 0 };
287
424
  fbwSeeded = false;
425
+ // undefined = not yet resolved; null = no HUD / not the player.
426
+ _hud = undefined;
427
+ _hudMounted = false;
288
428
  meshNode = null;
289
429
  meshesToDispose = [];
290
430
  // Ground sampling is ONE raycast per frame, taken after the move and cached: the
@@ -387,8 +527,57 @@ export class B3dAircraft extends B3dControllable {
387
527
  // ceiling you can be stalled but the thrust still goes forward.
388
528
  this.vtolActive = attrs.vtolSpeed > 0 && fwdSpeed < attrs.vtolSpeed;
389
529
  this.stalling = false;
530
+ // Drive a linked HUD (a <tosi-b3d-hud> sibling) when this is the player. Found
531
+ // once and cached; loosely typed so the aircraft doesn't depend on b3d-hud.
532
+ if (this._hud === undefined) {
533
+ this._hud =
534
+ attrs.player && this.owner
535
+ ? this.owner.querySelector('tosi-b3d-hud')
536
+ : null;
537
+ }
538
+ if (this._hud != null) {
539
+ // Mount the HUD onto the canopy (in-scene) once, so it shows in a 3D cockpit
540
+ // and in VR — parented to the airframe just ahead of the pilot's eye, banking
541
+ // with the plane (not head-locked).
542
+ if (!this._hudMounted && this._hud.attachInScene != null) {
543
+ this._hudMounted = true;
544
+ this._hud.attachInScene(node, {
545
+ size: attrs.hudSize,
546
+ position: new BABYLON.Vector3(0, this.eyeHeight, this.cockpitForward + attrs.hudForward),
547
+ });
548
+ }
549
+ // In cockpit view the 3D canopy HUD is the HUD; the flat DOM overlay is for the
550
+ // chase view only when `hud-chase` opts in.
551
+ const inCockpit = this.cameraView === 'cockpit';
552
+ this._hud.setInSceneVisible?.(inCockpit);
553
+ const showHud = inCockpit || attrs.hudChase;
554
+ this._hud.setVisible(!inCockpit && attrs.hudChase);
555
+ if (showHud) {
556
+ const RAD = 180 / Math.PI;
557
+ this._hud.setMeter('speed', attrs.maxSpeed > 0 ? this.fbw.speed / attrs.maxSpeed : 0);
558
+ this._hud.setMeter('altitude', this.altitude / attrs.ceiling);
559
+ // Nose-up should slide the horizon down — flip here if it reads inverted.
560
+ this._hud.setHorizon(this.fbw.pitch * RAD, this.fbw.bank * RAD);
561
+ // Warnings on the graphical HUD: PULL UP flashes the bottom arc (ground
562
+ // below); STALL is text only (not directional).
563
+ const warnings = [];
564
+ if (this.pullUp)
565
+ warnings.push({ text: 'PULL UP', side: 'bottom' });
566
+ if (this.stalling)
567
+ warnings.push({ text: 'STALL' });
568
+ this._hud.setWarnings(warnings);
569
+ // health/energy: wired once the combat resource models drive the aircraft.
570
+ // radar traces (setTraces): wired once scene targets exist.
571
+ }
572
+ }
390
573
  // === Apply velocity to position ===
391
574
  node.position.addInPlaceFromFloats(vel.x * dt, vel.y * dt, vel.z * dt);
575
+ // Service ceiling: can't climb past it. Cap altitude and bleed the climb.
576
+ if (node.position.y > attrs.ceiling) {
577
+ node.position.y = attrs.ceiling;
578
+ if (vel.y > 0)
579
+ vel.y = 0;
580
+ }
392
581
  // Ground contact. Clamp out of the terrain; once settled, behave like
393
582
  // wheels — kill the downward bounce and apply rolling resistance so you can
394
583
  // land, roll to a stop, and accelerate to take off again. (First cut — tune
@@ -416,6 +605,161 @@ export class B3dAircraft extends B3dControllable {
416
605
  // fly-by-wire block above. Just refresh the ground-proximity pull-up warning.
417
606
  this.altitude = node.position.y;
418
607
  this.updatePullUp(node, groundDist);
608
+ // Weapons last, so shells spawn from this frame's muzzle position.
609
+ this.updateWeapons(input, dt);
610
+ }
611
+ // --- Weapons ---------------------------------------------------------------
612
+ // Cannon on held `shoot` (cadence-gated), bomb on `jump` (edge), missile on
613
+ // `aim` (edge) — all built on the pure combat toolkit (spawnProjectile /
614
+ // spawnMissile / warhead). Shells inherit the airframe's velocity so they lead
615
+ // naturally with your own motion.
616
+ updateWeapons(input, dt) {
617
+ if (isOff(this.weapons) || this.crashed || !this.meshNode)
618
+ return;
619
+ if (this.owner == null)
620
+ return;
621
+ this._gunCd -= dt;
622
+ this._bombCd -= dt;
623
+ this._missileCd -= dt;
624
+ if (input.shoot > 0.5 && this._gunCd <= 0)
625
+ this.fireGuns();
626
+ const bomb = input.jump > 0.5;
627
+ if (bomb && !this._bombWas && this._bombCd <= 0)
628
+ this.dropBomb();
629
+ this._bombWas = bomb;
630
+ const missile = input.aim > 0.5;
631
+ if (missile && !this._missileWas && this._missileCd <= 0)
632
+ this.fireMissile();
633
+ this._missileWas = missile;
634
+ }
635
+ /** The airframe's own meshes — the collision ray must skip these so a shell/bomb
636
+ * spawned at the belly (or the nose in a climb) never detonates on us. */
637
+ ownMeshes() {
638
+ if (this._ownMeshes == null && this.meshNode != null) {
639
+ const own = new Set();
640
+ if (this.meshNode instanceof BABYLON.AbstractMesh)
641
+ own.add(this.meshNode);
642
+ for (const child of this.meshNode.getChildMeshes())
643
+ own.add(child);
644
+ this._ownMeshes = own;
645
+ }
646
+ return this._ownMeshes ?? new Set();
647
+ }
648
+ /** World nose direction (unit) and a muzzle point `ahead` metres in front. */
649
+ muzzle(ahead, drop = 0) {
650
+ const node = this.meshNode;
651
+ node.getDirectionToRef(LOCAL_Z, this._fwd);
652
+ 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);
653
+ }
654
+ /** Fire one cannon shell forward, inheriting the airframe's velocity. */
655
+ fireGuns() {
656
+ if (this.owner == null || !this.meshNode)
657
+ return;
658
+ const attrs = this;
659
+ this._gunCd = attrs.gunRate > 0 ? 1 / attrs.gunRate : 0;
660
+ const origin = this.muzzle(2.2); // sets this._fwd to the world nose direction
661
+ const dir = this._fwd.clone().normalize();
662
+ const ignore = (m) => this.ownMeshes().has(m);
663
+ spawnProjectile(this.owner, {
664
+ origin,
665
+ velocity: this.velocity.add(dir.scale(attrs.gunSpeed)),
666
+ warhead: this.gunWarhead,
667
+ params: { gravity: { x: 0, y: -9.81, z: 0 }, dragCoeff: 0.001, mass: 2 },
668
+ radius: 0.08,
669
+ color: '#fff2a0',
670
+ maxLifetime: 3,
671
+ ignore,
672
+ });
673
+ }
674
+ /** Drop a bomb — it inherits the airframe's velocity and falls under gravity.
675
+ * Released a little below the belly and set to ignore our own geometry, so a bank
676
+ * doesn't detonate it on the wing. */
677
+ dropBomb() {
678
+ if (this.owner == null || !this.meshNode)
679
+ return;
680
+ const attrs = this;
681
+ this._bombCd = 0.6;
682
+ spawnProjectile(this.owner, {
683
+ origin: this.muzzle(0, 1.2), // clear of the belly
684
+ velocity: this.velocity.clone(),
685
+ warhead: { damage: attrs.bombDamage, fullRadius: 2, blastRadius: 6 },
686
+ params: { gravity: { x: 0, y: -9.81, z: 0 }, dragCoeff: 0.002, mass: 4 },
687
+ radius: 0.25,
688
+ color: '#404040',
689
+ maxLifetime: 12,
690
+ ignore: (m) => this.ownMeshes().has(m),
691
+ });
692
+ }
693
+ /** Fire a guided missile at the nearest target in the forward cone (else dumb). */
694
+ fireMissile() {
695
+ if (this.owner == null || !this.meshNode)
696
+ return;
697
+ const attrs = this;
698
+ this._missileCd = 0.8;
699
+ const origin = this.muzzle(1.6);
700
+ const dir = this._fwd.clone().normalize();
701
+ const spec = {
702
+ damage: attrs.missileDamage,
703
+ fullRadius: 1.5,
704
+ blastRadius: 4,
705
+ };
706
+ const ignore = (m) => this.ownMeshes().has(m);
707
+ const target = this.acquireTarget(origin, dir, attrs.lockRange, attrs.lockConeDeg);
708
+ if (target != null) {
709
+ spawnMissile(this.owner, {
710
+ origin,
711
+ target,
712
+ speed: attrs.missileSpeed,
713
+ turnRate: attrs.missileTurnRate,
714
+ warhead: spec,
715
+ direction: dir,
716
+ radius: 0.18,
717
+ ignore,
718
+ });
719
+ }
720
+ else {
721
+ // No lock — fire it straight ahead as an unguided rocket.
722
+ spawnProjectile(this.owner, {
723
+ origin,
724
+ velocity: this.velocity.add(dir.scale(attrs.missileSpeed)),
725
+ warhead: spec,
726
+ params: { gravity: { x: 0, y: 0, z: 0 }, dragCoeff: 0, mass: 1 },
727
+ radius: 0.18,
728
+ color: '#ff6644',
729
+ maxLifetime: 8,
730
+ ignore,
731
+ });
732
+ }
733
+ }
734
+ get gunWarhead() {
735
+ return {
736
+ damage: this.gunDamage,
737
+ fullRadius: 0.5,
738
+ blastRadius: 1.5,
739
+ };
740
+ }
741
+ /** Nearest destroyable within `range` and inside the forward cone (or null). */
742
+ acquireTarget(origin, fwd, range, coneDeg) {
743
+ const minCos = Math.cos((coneDeg * Math.PI) / 180);
744
+ let best = null;
745
+ let bestDist = Infinity;
746
+ const els = this.owner.querySelectorAll('tosi-b3d-destroyable');
747
+ for (const el of Array.from(els)) {
748
+ const mesh = el.mesh;
749
+ if (mesh == null || mesh.isDisposed())
750
+ continue;
751
+ const to = mesh.absolutePosition.subtract(origin);
752
+ const dist = to.length();
753
+ if (dist > range || dist < 1e-3)
754
+ continue;
755
+ if (BABYLON.Vector3.Dot(to.scale(1 / dist), fwd) < minCos)
756
+ continue;
757
+ if (dist < bestDist) {
758
+ bestDist = dist;
759
+ best = mesh;
760
+ }
761
+ }
762
+ return best;
419
763
  }
420
764
  /** Distance from the aircraft origin down to the nearest ground: the lower of
421
765
  * any terrain collider the raycast hits and the configured ground plane. */
@@ -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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"}