tosijs-3d 0.6.1 → 0.7.0-beta.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.
Files changed (203) hide show
  1. package/dist/ambient-budget.d.ts +45 -0
  2. package/dist/ambient-budget.d.ts.map +1 -1
  3. package/dist/ambient-budget.js +43 -0
  4. package/dist/ambient-budget.js.map +1 -1
  5. package/dist/b3d-aircraft.d.ts +92 -3
  6. package/dist/b3d-aircraft.d.ts.map +1 -1
  7. package/dist/b3d-aircraft.js +511 -45
  8. package/dist/b3d-aircraft.js.map +1 -1
  9. package/dist/b3d-ambient.d.ts +5 -0
  10. package/dist/b3d-ambient.d.ts.map +1 -1
  11. package/dist/b3d-ambient.js +39 -4
  12. package/dist/b3d-ambient.js.map +1 -1
  13. package/dist/b3d-black-hole.d.ts.map +1 -1
  14. package/dist/b3d-black-hole.js +2 -2
  15. package/dist/b3d-black-hole.js.map +1 -1
  16. package/dist/b3d-clouds.d.ts +11 -1
  17. package/dist/b3d-clouds.d.ts.map +1 -1
  18. package/dist/b3d-clouds.js +250 -53
  19. package/dist/b3d-clouds.js.map +1 -1
  20. package/dist/b3d-collisions.d.ts.map +1 -1
  21. package/dist/b3d-collisions.js +4 -1
  22. package/dist/b3d-collisions.js.map +1 -1
  23. package/dist/b3d-controllable.d.ts.map +1 -1
  24. package/dist/b3d-controllable.js +6 -2
  25. package/dist/b3d-controllable.js.map +1 -1
  26. package/dist/b3d-death.d.ts +1 -0
  27. package/dist/b3d-death.d.ts.map +1 -1
  28. package/dist/b3d-death.js +125 -52
  29. package/dist/b3d-death.js.map +1 -1
  30. package/dist/b3d-destroyable.d.ts +23 -0
  31. package/dist/b3d-destroyable.d.ts.map +1 -1
  32. package/dist/b3d-destroyable.js +104 -12
  33. package/dist/b3d-destroyable.js.map +1 -1
  34. package/dist/b3d-exploder.d.ts +18 -1
  35. package/dist/b3d-exploder.d.ts.map +1 -1
  36. package/dist/b3d-exploder.js +45 -2
  37. package/dist/b3d-exploder.js.map +1 -1
  38. package/dist/b3d-hud.d.ts +25 -0
  39. package/dist/b3d-hud.d.ts.map +1 -1
  40. package/dist/b3d-hud.js +38 -6
  41. package/dist/b3d-hud.js.map +1 -1
  42. package/dist/b3d-launcher.d.ts +41 -0
  43. package/dist/b3d-launcher.d.ts.map +1 -1
  44. package/dist/b3d-launcher.js +131 -53
  45. package/dist/b3d-launcher.js.map +1 -1
  46. package/dist/b3d-library.d.ts +42 -0
  47. package/dist/b3d-library.d.ts.map +1 -1
  48. package/dist/b3d-library.js +168 -18
  49. package/dist/b3d-library.js.map +1 -1
  50. package/dist/b3d-loader.d.ts.map +1 -1
  51. package/dist/b3d-loader.js +4 -4
  52. package/dist/b3d-loader.js.map +1 -1
  53. package/dist/b3d-planet.d.ts +4 -0
  54. package/dist/b3d-planet.d.ts.map +1 -1
  55. package/dist/b3d-planet.js +56 -2
  56. package/dist/b3d-planet.js.map +1 -1
  57. package/dist/b3d-probe.d.ts +7 -0
  58. package/dist/b3d-probe.d.ts.map +1 -1
  59. package/dist/b3d-probe.js +5 -1
  60. package/dist/b3d-probe.js.map +1 -1
  61. package/dist/b3d-radar.d.ts.map +1 -1
  62. package/dist/b3d-radar.js +2 -2
  63. package/dist/b3d-radar.js.map +1 -1
  64. package/dist/b3d-reflections.d.ts.map +1 -1
  65. package/dist/b3d-reflections.js +3 -1
  66. package/dist/b3d-reflections.js.map +1 -1
  67. package/dist/b3d-shadows.d.ts.map +1 -1
  68. package/dist/b3d-shadows.js +4 -3
  69. package/dist/b3d-shadows.js.map +1 -1
  70. package/dist/b3d-spawner.d.ts.map +1 -1
  71. package/dist/b3d-spawner.js +3 -3
  72. package/dist/b3d-spawner.js.map +1 -1
  73. package/dist/b3d-star-system.d.ts.map +1 -1
  74. package/dist/b3d-star-system.js +2 -2
  75. package/dist/b3d-star-system.js.map +1 -1
  76. package/dist/b3d-star.d.ts.map +1 -1
  77. package/dist/b3d-star.js +2 -2
  78. package/dist/b3d-star.js.map +1 -1
  79. package/dist/b3d-terrain.d.ts +107 -3
  80. package/dist/b3d-terrain.d.ts.map +1 -1
  81. package/dist/b3d-terrain.js +337 -34
  82. package/dist/b3d-terrain.js.map +1 -1
  83. package/dist/b3d-turret.d.ts.map +1 -1
  84. package/dist/b3d-turret.js +4 -4
  85. package/dist/b3d-turret.js.map +1 -1
  86. package/dist/b3d-utils.d.ts +47 -0
  87. package/dist/b3d-utils.d.ts.map +1 -1
  88. package/dist/b3d-utils.js +87 -0
  89. package/dist/b3d-utils.js.map +1 -1
  90. package/dist/b3d-warhead.d.ts.map +1 -1
  91. package/dist/b3d-warhead.js +18 -4
  92. package/dist/b3d-warhead.js.map +1 -1
  93. package/dist/b3d-water.d.ts +37 -0
  94. package/dist/b3d-water.d.ts.map +1 -1
  95. package/dist/b3d-water.js +123 -2
  96. package/dist/b3d-water.js.map +1 -1
  97. package/dist/biome-chart.d.ts +80 -0
  98. package/dist/biome-chart.d.ts.map +1 -0
  99. package/dist/biome-chart.js +295 -0
  100. package/dist/biome-chart.js.map +1 -0
  101. package/dist/biome-plugin.d.ts +230 -0
  102. package/dist/biome-plugin.d.ts.map +1 -0
  103. package/dist/biome-plugin.js +739 -0
  104. package/dist/biome-plugin.js.map +1 -0
  105. package/dist/carve.d.ts +89 -0
  106. package/dist/carve.d.ts.map +1 -0
  107. package/dist/carve.js +229 -0
  108. package/dist/carve.js.map +1 -0
  109. package/dist/cloud-shadows.d.ts +0 -1
  110. package/dist/cloud-shadows.d.ts.map +1 -1
  111. package/dist/cloud-shadows.js +8 -1
  112. package/dist/cloud-shadows.js.map +1 -1
  113. package/dist/control-input.d.ts +5 -0
  114. package/dist/control-input.d.ts.map +1 -1
  115. package/dist/control-input.js +5 -0
  116. package/dist/control-input.js.map +1 -1
  117. package/dist/destroyable-behavior.d.ts +1 -1
  118. package/dist/destroyable-behavior.d.ts.map +1 -1
  119. package/dist/destroyable-behavior.js +21 -6
  120. package/dist/destroyable-behavior.js.map +1 -1
  121. package/dist/fly-by-wire.d.ts +58 -0
  122. package/dist/fly-by-wire.d.ts.map +1 -1
  123. package/dist/fly-by-wire.js +117 -9
  124. package/dist/fly-by-wire.js.map +1 -1
  125. package/dist/glass-gamepad.d.ts +42 -0
  126. package/dist/glass-gamepad.d.ts.map +1 -1
  127. package/dist/glass-gamepad.js +111 -1
  128. package/dist/glass-gamepad.js.map +1 -1
  129. package/dist/hardware-gamepad.d.ts +1 -0
  130. package/dist/hardware-gamepad.d.ts.map +1 -1
  131. package/dist/hardware-gamepad.js +1 -0
  132. package/dist/hardware-gamepad.js.map +1 -1
  133. package/dist/hud-math.d.ts +27 -0
  134. package/dist/hud-math.d.ts.map +1 -1
  135. package/dist/hud-math.js +60 -0
  136. package/dist/hud-math.js.map +1 -1
  137. package/dist/hud.d.ts +24 -0
  138. package/dist/hud.d.ts.map +1 -1
  139. package/dist/hud.js +62 -2
  140. package/dist/hud.js.map +1 -1
  141. package/dist/index.d.ts +40 -2
  142. package/dist/index.d.ts.map +1 -1
  143. package/dist/index.js +54 -2
  144. package/dist/index.js.map +1 -1
  145. package/dist/keyboard-gamepad.d.ts +1 -0
  146. package/dist/keyboard-gamepad.d.ts.map +1 -1
  147. package/dist/keyboard-gamepad.js +1 -0
  148. package/dist/keyboard-gamepad.js.map +1 -1
  149. package/dist/landform.d.ts +174 -0
  150. package/dist/landform.d.ts.map +1 -0
  151. package/dist/landform.js +266 -0
  152. package/dist/landform.js.map +1 -0
  153. package/dist/medium.d.ts +131 -0
  154. package/dist/medium.d.ts.map +1 -0
  155. package/dist/medium.js +185 -0
  156. package/dist/medium.js.map +1 -0
  157. package/dist/model-transform.d.ts +50 -7
  158. package/dist/model-transform.d.ts.map +1 -1
  159. package/dist/model-transform.js +71 -13
  160. package/dist/model-transform.js.map +1 -1
  161. package/dist/patch-field.d.ts +38 -0
  162. package/dist/patch-field.d.ts.map +1 -0
  163. package/dist/patch-field.js +106 -0
  164. package/dist/patch-field.js.map +1 -0
  165. package/dist/portal-transform.d.ts +78 -0
  166. package/dist/portal-transform.d.ts.map +1 -0
  167. package/dist/portal-transform.js +221 -0
  168. package/dist/portal-transform.js.map +1 -0
  169. package/dist/sdf-lattice.d.ts +69 -0
  170. package/dist/sdf-lattice.d.ts.map +1 -0
  171. package/dist/sdf-lattice.js +485 -0
  172. package/dist/sdf-lattice.js.map +1 -0
  173. package/dist/slope-profile.d.ts +38 -0
  174. package/dist/slope-profile.d.ts.map +1 -0
  175. package/dist/slope-profile.js +137 -0
  176. package/dist/slope-profile.js.map +1 -0
  177. package/dist/terrain-grid.d.ts +90 -1
  178. package/dist/terrain-grid.d.ts.map +1 -1
  179. package/dist/terrain-grid.js +197 -11
  180. package/dist/terrain-grid.js.map +1 -1
  181. package/dist/tosi-b3d.d.ts +173 -1
  182. package/dist/tosi-b3d.d.ts.map +1 -1
  183. package/dist/tosi-b3d.js +592 -22
  184. package/dist/tosi-b3d.js.map +1 -1
  185. package/dist/touch-gamepad.d.ts +1 -0
  186. package/dist/touch-gamepad.d.ts.map +1 -1
  187. package/dist/touch-gamepad.js +1 -0
  188. package/dist/touch-gamepad.js.map +1 -1
  189. package/dist/virtual-gamepad.d.ts +46 -2
  190. package/dist/virtual-gamepad.d.ts.map +1 -1
  191. package/dist/virtual-gamepad.js +30 -8
  192. package/dist/virtual-gamepad.js.map +1 -1
  193. package/dist/widgets3d-layout.d.ts +19 -0
  194. package/dist/widgets3d-layout.d.ts.map +1 -1
  195. package/dist/widgets3d-layout.js +22 -0
  196. package/dist/widgets3d-layout.js.map +1 -1
  197. package/dist/world-store.js +2 -2
  198. package/dist/world-view.js +2 -2
  199. package/dist/xr-gamepad.d.ts +1 -0
  200. package/dist/xr-gamepad.d.ts.map +1 -1
  201. package/dist/xr-gamepad.js +1 -0
  202. package/dist/xr-gamepad.js.map +1 -1
  203. package/package.json +4 -3
@@ -59,4 +59,49 @@ export declare function allocateAmbient(requests: AmbientRequest[], opts: {
59
59
  * side effect of this ratchet.)
60
60
  */
61
61
  export declare function ratchetPool(scale: number): number;
62
+ export interface SpawnBiasOptions {
63
+ /** Emitter box half-size (the `radius` attribute). */
64
+ radius: number;
65
+ /** Fraction of `radius` to push the box along the VIEW direction (0 = centred). */
66
+ lookAhead?: number;
67
+ /** Seconds of travel to push the box along the direction of MOTION. */
68
+ lead?: number;
69
+ /** Speed beyond which the motion lead stops growing (m/s). */
70
+ speedCap?: number;
71
+ }
72
+ /**
73
+ * Where to centre the ambient emitter box, given where you're looking and how
74
+ * fast you're going.
75
+ *
76
+ * Centring it on the camera is right for a walker and wrong for anything quick,
77
+ * for two compounding reasons (tosijs-3d#17/#18, from manta-recon):
78
+ *
79
+ * 1. **A camera sees a frustum, not a sphere.** Most of a box centred on the eye
80
+ * is behind, beside and below it, so most particles are born unseen, live
81
+ * unseen and are culled unseen — full cost, a fraction of the result. The
82
+ * owner's report: *"most of the bubbles are spawning out of sight and then
83
+ * stay out of sight until they're culled."*
84
+ * 2. **You outrun it.** At 30 m/s a 12 m box is behind you in under a second, so
85
+ * the faster you go the emptier the view ahead — exactly backwards, since
86
+ * speed is when you most want a medium rushing past.
87
+ *
88
+ * In a chase view both bite at once: the camera trails the vehicle, so the box
89
+ * is already behind the thing the player is watching.
90
+ *
91
+ * Returns the OFFSET from the eye, so the caller adds it to whatever else it
92
+ * does (the existing wind bias, for instance).
93
+ */
94
+ export declare function spawnBias(forward: {
95
+ x: number;
96
+ y: number;
97
+ z: number;
98
+ }, velocity: {
99
+ x: number;
100
+ y: number;
101
+ z: number;
102
+ }, opts: SpawnBiasOptions): {
103
+ x: number;
104
+ y: number;
105
+ z: number;
106
+ };
62
107
  //# sourceMappingURL=ambient-budget.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ambient-budget.d.ts","sourceRoot":"","sources":["../src/ambient-budget.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,uDAAuD;AACvD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV;8DAC0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;IACX,uDAAuD;IACvD,OAAO,EAAE,QAAQ,CAAA;IACjB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,IAAI,cAAc,CAAA;IAC/B,kFAAkF;IAClF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAIrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACrC,iBAAiB,CAwBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD"}
1
+ {"version":3,"file":"ambient-budget.d.ts","sourceRoot":"","sources":["../src/ambient-budget.ts"],"names":[],"mappings":"AAuDA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAE5C,uDAAuD;AACvD,MAAM,MAAM,cAAc,GAAG;IAC3B,EAAE,EAAE,MAAM,CAAA;IACV;8DAC0D;IAC1D,OAAO,EAAE,MAAM,CAAA;IACf,yFAAyF;IACzF,GAAG,EAAE,MAAM,CAAA;IACX,uDAAuD;IACvD,OAAO,EAAE,QAAQ,CAAA;IACjB,mFAAmF;IACnF,QAAQ,EAAE,MAAM,CAAA;IAChB,gFAAgF;IAChF,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAED,0EAA0E;AAC1E,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;AAEtD;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,aAAa,IAAI,cAAc,CAAA;IAC/B,kFAAkF;IAClF,eAAe,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAA;CACxC;AAOD;;;;;;;;GAQG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,OAAO,GAAG,MAAM,CAIrE;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,cAAc,EAAE,EAC1B,IAAI,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAA;CAAE,GACrC,iBAAiB,CAwBnB;AAED;;;;;;;;;GASG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAGjD;AAED,MAAM,WAAW,gBAAgB;IAC/B,sDAAsD;IACtD,MAAM,EAAE,MAAM,CAAA;IACd,mFAAmF;IACnF,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,uEAAuE;IACvE,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,SAAS,CACvB,OAAO,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC5C,QAAQ,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EAC7C,IAAI,EAAE,gBAAgB,GACrB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAsBrC"}
@@ -116,4 +116,47 @@ export function ratchetPool(scale) {
116
116
  const next = scale * 0.6;
117
117
  return next < 0.25 ? 0 : next; // below a quarter there's no honest effect left — all off
118
118
  }
119
+ /**
120
+ * Where to centre the ambient emitter box, given where you're looking and how
121
+ * fast you're going.
122
+ *
123
+ * Centring it on the camera is right for a walker and wrong for anything quick,
124
+ * for two compounding reasons (tosijs-3d#17/#18, from manta-recon):
125
+ *
126
+ * 1. **A camera sees a frustum, not a sphere.** Most of a box centred on the eye
127
+ * is behind, beside and below it, so most particles are born unseen, live
128
+ * unseen and are culled unseen — full cost, a fraction of the result. The
129
+ * owner's report: *"most of the bubbles are spawning out of sight and then
130
+ * stay out of sight until they're culled."*
131
+ * 2. **You outrun it.** At 30 m/s a 12 m box is behind you in under a second, so
132
+ * the faster you go the emptier the view ahead — exactly backwards, since
133
+ * speed is when you most want a medium rushing past.
134
+ *
135
+ * In a chase view both bite at once: the camera trails the vehicle, so the box
136
+ * is already behind the thing the player is watching.
137
+ *
138
+ * Returns the OFFSET from the eye, so the caller adds it to whatever else it
139
+ * does (the existing wind bias, for instance).
140
+ */
141
+ export function spawnBias(forward, velocity, opts) {
142
+ const { radius, lookAhead = 0, lead = 0, speedCap = 40 } = opts;
143
+ const out = { x: 0, y: 0, z: 0 };
144
+ const fLen = Math.hypot(forward.x, forward.y, forward.z);
145
+ if (fLen > 1e-6 && lookAhead !== 0) {
146
+ const k = (radius * lookAhead) / fLen;
147
+ out.x += forward.x * k;
148
+ out.y += forward.y * k;
149
+ out.z += forward.z * k;
150
+ }
151
+ const speed = Math.hypot(velocity.x, velocity.y, velocity.z);
152
+ if (speed > 1e-6 && lead !== 0) {
153
+ // Capped, not proportional: past a point, leading further just spawns
154
+ // particles beyond the far plane, which is the same waste from the other end.
155
+ const k = (lead * Math.min(speed, speedCap)) / speed;
156
+ out.x += velocity.x * k;
157
+ out.y += velocity.y * k;
158
+ out.z += velocity.z * k;
159
+ }
160
+ return out;
161
+ }
119
162
  //# sourceMappingURL=ambient-budget.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"ambient-budget.js","sourceRoot":"","sources":["../src/ambient-budget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ambient-budget.js","sourceRoot":"","sources":["../src/ambient-budget.ts"],"names":[],"mappings":"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"}
@@ -12,13 +12,44 @@ export declare class B3dAircraft extends B3dControllable {
12
12
  player: boolean;
13
13
  enterable: boolean;
14
14
  ceiling: number;
15
- hudChase: boolean;
15
+ hudChaseOff: boolean;
16
16
  hudSize: number;
17
17
  hudForward: number;
18
18
  maxSpeed: number;
19
19
  afterburnerSpeed: number;
20
20
  acceleration: number;
21
21
  vtolSpeed: number;
22
+ /** How fast the craft may back up in hover (units/s). */
23
+ reverseSpeed: number;
24
+ /** How fast the trigger moves the throttle lever (setting/sec). */
25
+ throttleRate: number;
26
+ /**
27
+ * AUTO LANDING GEAR. `'on'` finds the model's gear-retract AnimationGroups
28
+ * by name and runs them with height above ground: up on climb-out, down on
29
+ * approach. `'off'` leaves the gear to you (call `setGear`).
30
+ */
31
+ autoGear: "on" | "off";
32
+ /** Height above ground (m) at which the gear retracts. It extends again at
33
+ * 60% of this — hysteresis, so a bumpy approach doesn't cycle it. */
34
+ gearAltitude: number;
35
+ /** Optional sound for the gear cycle (URL). Played spatially at the
36
+ * airframe, once per transition. */
37
+ gearSound: string;
38
+ /** Volume for `gearSound`. */
39
+ gearVolume: number;
40
+ /** Seconds for a full gear cycle. */
41
+ gearTime: number;
42
+ /** How far the LOOK stick can swing the view (degrees each way). */
43
+ lookRange: number;
44
+ /** Max nose-UP attitude the stick can command, degrees. */
45
+ maxPitch: number;
46
+ /** Max nose-DOWN attitude, degrees. 0 = same as `maxPitch`. */
47
+ maxDive: number;
48
+ /** Look slew rate (degrees/sec at full deflection). */
49
+ lookRate: number;
50
+ /** How fast the view springs back to centre when the stick is released
51
+ * (fraction of the remaining offset per second). */
52
+ lookReturn: number;
22
53
  hoverCeiling: number;
23
54
  groundY: number;
24
55
  crashSpeed: number;
@@ -77,7 +108,7 @@ export declare class B3dAircraft extends B3dControllable {
77
108
  private fbw;
78
109
  private fbwSeeded;
79
110
  ceiling: number;
80
- hudChase: boolean;
111
+ hudChaseOff: boolean;
81
112
  reticle: string;
82
113
  reticleRange: number;
83
114
  private _hud;
@@ -87,8 +118,19 @@ export declare class B3dAircraft extends B3dControllable {
87
118
  private meshNode;
88
119
  private _chasePivot;
89
120
  private _chaseLookPitch;
121
+ /** Where the LOOK stick has swung the view (radians), and how fast it
122
+ * springs back when released. */
123
+ private _lookYaw;
124
+ private _lookPitch;
90
125
  private meshesToDispose;
91
126
  private _lastGroundDist;
127
+ private _groundNormal;
128
+ /** True while the airframe is in open air INSIDE the ground (a bore/cavern):
129
+ * heightfield assumptions are suspended for the frame. */
130
+ private _inCavity;
131
+ private _worldVel;
132
+ private _prevPos;
133
+ private _prevPosValid;
92
134
  private _ray;
93
135
  private _ownMeshes;
94
136
  private groundClearance;
@@ -104,7 +146,11 @@ export declare class B3dAircraft extends B3dControllable {
104
146
  /** The airframe's own meshes — the collision ray must skip these so a shell/bomb
105
147
  * spawned at the belly (or the nose in a climb) never detonates on us. */
106
148
  private ownMeshes;
107
- /** World nose direction (unit) and a muzzle point `ahead` metres in front. */
149
+ /** World nose direction (unit) and a muzzle point `ahead` metres in front.
150
+ * Computed through the WORLD matrix, never node.position: with a
151
+ * _centerOfGravity pivot the rendered airframe swings about the CoG under
152
+ * attitude, and position alone points at the stance origin — shots would
153
+ * spawn beside/behind the visible plane in a turn. */
108
154
  private muzzle;
109
155
  /** Fire one cannon shell forward, inheriting the airframe's velocity. */
110
156
  fireGuns(): void;
@@ -122,6 +168,49 @@ export declare class B3dAircraft extends B3dControllable {
122
168
  private get gunWarhead();
123
169
  /** Nearest destroyable within `range` and inside the forward cone (or null). */
124
170
  private acquireTarget;
171
+ /** The model's gear-retract animations, found by name (see `_findGear`). */
172
+ private _gearGroups;
173
+ /** true = retracted (or retracting). Starts DOWN: you spawn on the ground. */
174
+ private _gearUp;
175
+ private _gearSound;
176
+ /** 0 = down, 1 = up — scrubbed toward `_gearTarget`. */
177
+ private _gearPos;
178
+ private _gearTarget;
179
+ /**
180
+ * Find the gear animations on a freshly-loaded model, by NAME.
181
+ *
182
+ * Convention over configuration: a group whose name mentions "gear" and
183
+ * "retract" (or "up") is a landing-gear animation, so the scout's
184
+ * "Main Gear (L) Retract" / "Nose Gear Retract" are picked up with no
185
+ * authoring beyond what's already in the GLB. Library instances carry their
186
+ * groups on `metadata.animationGroups` (renamed per instance), so several
187
+ * aircraft each animate their own gear.
188
+ */
189
+ private _findGear;
190
+ /**
191
+ * Raise or lower the gear. Public so an AI pilot, a cutscene or a key bind
192
+ * can call it; `autoGear` drives it from altitude otherwise.
193
+ */
194
+ setGear(up: boolean): void;
195
+ /**
196
+ * The gear is SCRUBBED, not played.
197
+ *
198
+ * Letting the AnimationGroup play itself looked obvious and doesn't work:
199
+ * glTF animations arrive with a cyclic loop mode, so a group told to stop at
200
+ * the end can snap back to frame 0 — the gear cycles and then vanishes
201
+ * (exactly what Tonio saw) — and reverse playback via `start(from > to)` is
202
+ * unreliable across Babylon versions. Advancing a normalised position and
203
+ * calling `goToFrame` sidesteps all of it: no loop mode, no end-of-group
204
+ * behaviour, no second animation to author for the reverse, and an
205
+ * interrupted cycle simply turns around from wherever it had got to.
206
+ */
207
+ private _scrubGear;
208
+ /** True while the gear is up (or on its way). */
209
+ get gearUp(): boolean;
210
+ private _playGearSound;
211
+ /** Drive the gear from height above ground, with hysteresis so a bumpy
212
+ * approach or a hill passing underneath doesn't cycle it. */
213
+ private _updateGear;
125
214
  /** Distance from the aircraft origin down to the nearest ground: the lower of
126
215
  * any terrain collider the raycast hits and the configured ground plane. */
127
216
  private groundDistance;
@@ -1 +1 @@
1
- {"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"AAiOA,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;AAYnD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AA+D3C,qBAAa,WAAY,SAAQ,eAAe;IAC9C,YAAY,2CAAoB;IAEhC,MAAM,CAAC,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MAsDpB;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,8FAA8F;IAC9F,OAAO,CAAC,SAAS,CAAQ;IACzB;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;IACjB,OAAO,EAAE,MAAM,CAAA;IACf,YAAY,EAAE,MAAM,CAAA;IAE5B,OAAO,CAAC,IAAI,CAAwC;IACpD,OAAO,CAAC,WAAW,CAAQ;IAG3B,OAAO,CAAC,MAAM,CAAyC;IACvD,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAqC;IAKrD,OAAO,CAAC,WAAW,CAAqC;IACxD,OAAO,CAAC,eAAe,CAAI;IAC3B,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;IAmQ1C,OAAO,CAAC,aAAa;IAmBrB,OAAO,CAAC,QAAQ,CAA2B;IAE3C,gFAAgF;IAChF,OAAO,CAAC,eAAe;IA8BvB,mEAAmE;IACnE,IAAI,KAAK,IAAI,QAAQ,GAAG,IAAI,CAM3B;IAED;8EAC0E;IAC1E,OAAO,CAAC,SAAS;IAUjB,8EAA8E;IAC9E,OAAO,CAAC,MAAM;IAUd,yEAAyE;IACzE,QAAQ,IAAI,IAAI;IAmBhB;;0CAEsC;IACtC,QAAQ,IAAI,IAAI;IAgBhB;;;;;OAKG;IACH,WAAW,IAAI,IAAI;IAuDnB,OAAO,KAAK,UAAU,GAMrB;IAED,gFAAgF;IAChF,OAAO,CAAC,aAAa;IAyBrB;gFAC4E;IAC5E,OAAO,CAAC,cAAc;IAMtB,+EAA+E;IAC/E,OAAO,CAAC,KAAK;IAQb;;qDAEiD;IACjD,OAAO,CAAC,aAAa;IA6BrB,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;IAiCjB;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,WAAW,CAAkC;IACrD,OAAO,CAAC,aAAa,CAAkC;IAEvD,iBAAiB;IA6EjB;;qCAEiC;IACjC,aAAa,CAAC,IAAI,EAAE,OAAO,GAAG,SAAS;IAQvC,YAAY;CAuCb;AAED,eAAO,MAAM,WAAW,8CAEtB,CAAA"}
1
+ {"version":3,"file":"b3d-aircraft.d.ts","sourceRoot":"","sources":["../src/b3d-aircraft.ts"],"names":[],"mappings":"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"}