@fps-games/vfx 0.3.2 → 0.3.4

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 (234) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/README.md +5 -5
  3. package/dist/effects/treasure-attention/index.d.ts +1 -1
  4. package/package.json +6 -5
  5. package/tooling/vfx-cli.mjs +31 -22
  6. package/tooling/vfx-package-resolution.mjs +8 -8
  7. package/docs/AUTHORING_EFFECTS.md +0 -297
  8. package/docs/INTEGRATION.md +0 -194
  9. package/docs/VFX_LIBRARY_ARCHITECTURE_chatgpt.md +0 -1580
  10. package/docs/VFX_LIBRARY_EXECUTION_PLAN.md +0 -229
  11. package/docs/VFX_LIBRARY_PLAN.md +0 -546
  12. package/docs/hit-flash-red-method.md +0 -155
  13. package/docs/treasure_attention_fx_babylonjs_guide.md +0 -901
  14. package/docs/vfx-ab/RESULTS.md +0 -35
  15. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/after.png +0 -0
  16. package/docs/vfx-ab/lumber-order/vehicle-exhaust-smoke/before.png +0 -0
  17. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/after.png +0 -0
  18. package/docs/vfx-ab/lumber-truck/vehicle-exhaust-smoke/before.png +0 -0
  19. package/docs/vfx-integration_chatgpt.md +0 -462
  20. package/docs/vfx-placement-design.md +0 -164
  21. package/docs/weapon-trail-visualization.html +0 -241
  22. package/packages/EffectPackageService.ts +0 -346
  23. package/packages/SceneVfxService.ts +0 -96
  24. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/runtime/simpleMeshEffect.v1.js +0 -333
  25. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.frag.glsl +0 -25
  26. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/shaders/mesh-effect-preview.vert.glsl +0 -11
  27. package/packages/build.mesh.yellow_build_upgrade_indicator/assets/textures/effect_jianbian.png +0 -0
  28. package/packages/build.mesh.yellow_build_upgrade_indicator/effect.json +0 -927
  29. package/packages/build.mesh.yellow_build_upgrade_indicator/media/contact-sheet.png +0 -0
  30. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.gif +0 -0
  31. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.mp4 +0 -0
  32. package/packages/build.mesh.yellow_build_upgrade_indicator/media/preview.webm +0 -0
  33. package/packages/build.mesh.yellow_build_upgrade_indicator/media/thumbnail.png +0 -0
  34. package/packages/build.mesh.yellow_build_upgrade_indicator/metadata/description.json +0 -197
  35. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-effect.original.json +0 -895
  36. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/03-normalized-vfx-to-babylon-report.json +0 -241
  37. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-overrides.json +0 -542
  38. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/04-preview-tuning-report.json +0 -69
  39. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/asset-map.json +0 -125
  40. package/packages/build.mesh.yellow_build_upgrade_indicator/provenance/lineage.json +0 -44
  41. package/packages/build.particle.golden_upgrade_starburst/assets/runtime/particleEmitter.v1.js +0 -210
  42. package/packages/build.particle.golden_upgrade_starburst/assets/textures/effect_guangdian.png +0 -0
  43. package/packages/build.particle.golden_upgrade_starburst/effect.json +0 -880
  44. package/packages/build.particle.golden_upgrade_starburst/media/contact-sheet.png +0 -0
  45. package/packages/build.particle.golden_upgrade_starburst/media/preview.gif +0 -0
  46. package/packages/build.particle.golden_upgrade_starburst/media/preview.mp4 +0 -0
  47. package/packages/build.particle.golden_upgrade_starburst/media/preview.webm +0 -0
  48. package/packages/build.particle.golden_upgrade_starburst/media/thumbnail.png +0 -0
  49. package/packages/build.particle.golden_upgrade_starburst/metadata/description.json +0 -161
  50. package/packages/build.particle.golden_upgrade_starburst/provenance/03-effect.original.json +0 -762
  51. package/packages/build.particle.golden_upgrade_starburst/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  52. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-overrides.json +0 -436
  53. package/packages/build.particle.golden_upgrade_starburst/provenance/04-preview-tuning-report.json +0 -40
  54. package/packages/build.particle.golden_upgrade_starburst/provenance/asset-map.json +0 -115
  55. package/packages/build.particle.golden_upgrade_starburst/provenance/lineage.json +0 -40
  56. package/packages/build.particle.orange_upgrade_transform_sparks/assets/runtime/particleEmitter.v1.js +0 -210
  57. package/packages/build.particle.orange_upgrade_transform_sparks/assets/textures/b5b27ab1-e740-4398-b407-848fc2b2c897.png +0 -0
  58. package/packages/build.particle.orange_upgrade_transform_sparks/effect.json +0 -887
  59. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.gif +0 -0
  60. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.mp4 +0 -0
  61. package/packages/build.particle.orange_upgrade_transform_sparks/media/preview.webm +0 -0
  62. package/packages/build.particle.orange_upgrade_transform_sparks/media/thumbnail.png +0 -0
  63. package/packages/build.particle.orange_upgrade_transform_sparks/metadata/description.json +0 -179
  64. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-effect.original.json +0 -859
  65. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/03-normalized-vfx-to-babylon-report.json +0 -260
  66. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-overrides.json +0 -478
  67. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/04-preview-tuning-report.json +0 -40
  68. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/asset-map.json +0 -114
  69. package/packages/build.particle.orange_upgrade_transform_sparks/provenance/lineage.json +0 -41
  70. package/packages/build.particle.wood_chip_dust_burst/assets/runtime/particleEmitter.v1.js +0 -210
  71. package/packages/build.particle.wood_chip_dust_burst/assets/textures/effect_yanwu4.png +0 -0
  72. package/packages/build.particle.wood_chip_dust_burst/assets/textures/suipian3.png +0 -0
  73. package/packages/build.particle.wood_chip_dust_burst/effect.json +0 -1400
  74. package/packages/build.particle.wood_chip_dust_burst/media/contact-sheet.png +0 -0
  75. package/packages/build.particle.wood_chip_dust_burst/media/preview.gif +0 -0
  76. package/packages/build.particle.wood_chip_dust_burst/media/preview.mp4 +0 -0
  77. package/packages/build.particle.wood_chip_dust_burst/media/preview.webm +0 -0
  78. package/packages/build.particle.wood_chip_dust_burst/media/thumbnail.png +0 -0
  79. package/packages/build.particle.wood_chip_dust_burst/metadata/description.json +0 -173
  80. package/packages/build.particle.wood_chip_dust_burst/provenance/03-effect.original.json +0 -1277
  81. package/packages/build.particle.wood_chip_dust_burst/provenance/03-normalized-vfx-to-babylon-report.json +0 -329
  82. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-overrides.json +0 -749
  83. package/packages/build.particle.wood_chip_dust_burst/provenance/04-preview-tuning-report.json +0 -60
  84. package/packages/build.particle.wood_chip_dust_burst/provenance/asset-map.json +0 -146
  85. package/packages/build.particle.wood_chip_dust_burst/provenance/lineage.json +0 -69
  86. package/packages/effects/building-upgrade/effect.json +0 -6
  87. package/packages/effects/building-upgrade/index.ts +0 -387
  88. package/packages/effects/character-entrance/effect.json +0 -6
  89. package/packages/effects/character-entrance/index.ts +0 -308
  90. package/packages/effects/coin-burst/index.ts +0 -48
  91. package/packages/effects/comet-trail-flame/assets/textures/trail_5x4.webp +0 -0
  92. package/packages/effects/comet-trail-flame/index.ts +0 -107
  93. package/packages/effects/conveyor-upgrade/effect.json +0 -6
  94. package/packages/effects/conveyor-upgrade/index.ts +0 -401
  95. package/packages/effects/debris-smoke/assets/models/rock_debris.glb +0 -0
  96. package/packages/effects/debris-smoke/assets/textures/smoke22.webp +0 -0
  97. package/packages/effects/debris-smoke/index.ts +0 -102
  98. package/packages/effects/door_open_gold_flakes/assets/runtime/goldFlakes.v1.js +0 -397
  99. package/packages/effects/door_open_gold_flakes/door_open_gold_flakes.json +0 -498
  100. package/packages/effects/door_open_gold_flakes/index.ts +0 -11
  101. package/packages/effects/electric-arc/assets/textures/spark_4x4.webp +0 -0
  102. package/packages/effects/electric-arc/index.ts +0 -63
  103. package/packages/effects/energy-shield/effect.json +0 -7
  104. package/packages/effects/energy-shield/index.ts +0 -432
  105. package/packages/effects/explosion/assets/textures/baozha29.webp +0 -0
  106. package/packages/effects/explosion/assets/textures/glow01.webp +0 -0
  107. package/packages/effects/explosion/assets/textures/lizi01.webp +0 -0
  108. package/packages/effects/explosion/assets/textures/xulie_lizibaozha02_5x5.webp +0 -0
  109. package/packages/effects/explosion/index.ts +0 -115
  110. package/packages/effects/ground-tile-upgrade/effect.json +0 -6
  111. package/packages/effects/ground-tile-upgrade/index.ts +0 -410
  112. package/packages/effects/hit-flash/index.ts +0 -77
  113. package/packages/effects/laser-beam/assets/textures/laser_glow.webp +0 -0
  114. package/packages/effects/laser-beam/assets/textures/laser_noise.webp +0 -0
  115. package/packages/effects/laser-beam/index.ts +0 -6
  116. package/packages/effects/laser-beam-factory.ts +0 -146
  117. package/packages/effects/lumber-cart-suction/effect.json +0 -6
  118. package/packages/effects/lumber-cart-suction/index.ts +0 -399
  119. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb +0 -0
  120. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/.active +0 -1
  121. package/packages/effects/lumber-debris-scatter/assets/models/lumber_prop_model.glb.versions/1781589063890_upload.glb +0 -0
  122. package/packages/effects/lumber-debris-scatter/assets/runtime/solidParticleScatter.v1.js +0 -236
  123. package/packages/effects/lumber-debris-scatter/effect.json +0 -228
  124. package/packages/effects/lumber-debris-scatter/index.ts +0 -780
  125. package/packages/effects/lumber_vehicle_gear_spin/assets/runtime/gearSpin.v1.js +0 -202
  126. package/packages/effects/lumber_vehicle_gear_spin/index.ts +0 -11
  127. package/packages/effects/lumber_vehicle_gear_spin/lumber_vehicle_gear_spin.json +0 -338
  128. package/packages/effects/lumber_vehicle_upgrade_aura/assets/runtime/upgradeAura.v1.js +0 -353
  129. package/packages/effects/lumber_vehicle_upgrade_aura/index.ts +0 -13
  130. package/packages/effects/lumber_vehicle_upgrade_aura/lumber_vehicle_upgrade_aura.json +0 -365
  131. package/packages/effects/lumber_vehicle_wood_chips/assets/runtime/solidParticleScatter.v1.js +0 -310
  132. package/packages/effects/lumber_vehicle_wood_chips/index.ts +0 -11
  133. package/packages/effects/lumber_vehicle_wood_chips/lumber_vehicle_wood_chips.json +0 -335
  134. package/packages/effects/monster-hit/index.ts +0 -129
  135. package/packages/effects/player-upgrade/effect.json +0 -6
  136. package/packages/effects/player-upgrade/index.ts +0 -640
  137. package/packages/effects/pulse-laser-volley/assets/textures/bolt_guangshu.webp +0 -0
  138. package/packages/effects/pulse-laser-volley/index.ts +0 -215
  139. package/packages/effects/resource-collect-sparkles/effect.json +0 -6
  140. package/packages/effects/resource-collect-sparkles/index.ts +0 -254
  141. package/packages/effects/run-footstep-dust/assets/runtime/runFootstepDust.v1.js +0 -215
  142. package/packages/effects/run-footstep-dust/effect.json +0 -183
  143. package/packages/effects/run-footstep-dust/index.ts +0 -377
  144. package/packages/effects/space-shared.ts +0 -120
  145. package/packages/effects/thruster-flame/index.ts +0 -306
  146. package/packages/effects/treasure-attention/effect.json +0 -7
  147. package/packages/effects/treasure-attention/index.ts +0 -630
  148. package/packages/effects/tree-chop-dust/assets/textures/tree_chop_dust_atlas.png +0 -0
  149. package/packages/effects/tree-chop-dust/effect.json +0 -8
  150. package/packages/effects/tree-chop-dust/index.ts +0 -202
  151. package/packages/effects/tree-leaf-chop-burst/assets/runtime/particleEmitter.v1.js +0 -303
  152. package/packages/effects/tree-leaf-chop-burst/assets/textures/tree_leaf_chop_burst_leaf_atlas.png +0 -0
  153. package/packages/effects/tree-leaf-chop-burst/effect.json +0 -498
  154. package/packages/effects/tree-leaf-chop-burst/index.ts +0 -294
  155. package/packages/effects/tree_chop_dust_burst/assets/runtime/particleEmitter.v1.js +0 -318
  156. package/packages/effects/tree_chop_dust_burst/assets/textures/tree_chop_dust_burst_dust.png +0 -0
  157. package/packages/effects/tree_chop_dust_burst/index.ts +0 -13
  158. package/packages/effects/tree_chop_dust_burst/tree_chop_dust_burst.json +0 -412
  159. package/packages/effects/ufo-thread-flame/assets/textures/flame_flow.webp +0 -0
  160. package/packages/effects/ufo-thread-flame/assets/textures/flame_spike.webp +0 -0
  161. package/packages/effects/ufo-thread-flame/index.ts +0 -153
  162. package/packages/effects/vehicle-exhaust-smoke/assets/textures/vehicle_exhaust_smoke_atlas.png +0 -0
  163. package/packages/effects/vehicle-exhaust-smoke/effect.json +0 -8
  164. package/packages/effects/vehicle-exhaust-smoke/index.ts +0 -298
  165. package/packages/effects/vehicle-upgrade/effect.json +0 -6
  166. package/packages/effects/vehicle-upgrade/index.ts +0 -404
  167. package/packages/effects/weapon-trail/assets/textures/trail_wedge.png +0 -0
  168. package/packages/effects/weapon-trail/index.ts +0 -317
  169. package/packages/effects/wood-crusher-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  170. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  171. package/packages/effects/wood-crusher-sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  172. package/packages/effects/wood-crusher-sawdust/index.ts +0 -43
  173. package/packages/effects/wood-crusher-sawdust/wood_crusher_sawdust.json +0 -592
  174. package/packages/effects/wood-cutter-sawdust/assets/runtime/particleEmitter.v1.js +0 -312
  175. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  176. package/packages/effects/wood-cutter-sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  177. package/packages/effects/wood-cutter-sawdust/index.ts +0 -43
  178. package/packages/effects/wood-cutter-sawdust/wood_cutter_sawdust.json +0 -592
  179. package/packages/effects/wood-sawdust-effect-factory.ts +0 -194
  180. package/packages/effects/wood_crusher_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  181. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_dust.png +0 -0
  182. package/packages/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_fiber.png +0 -0
  183. package/packages/effects/wood_crusher_sawdust/index.ts +0 -29
  184. package/packages/effects/wood_crusher_sawdust/wood_crusher_sawdust.json +0 -592
  185. package/packages/effects/wood_cutter_sawdust/assets/runtime/particleEmitter.v1.js +0 -318
  186. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_chip.png +0 -0
  187. package/packages/effects/wood_cutter_sawdust/assets/textures/wood_cutter_sawdust_dust.png +0 -0
  188. package/packages/effects/wood_cutter_sawdust/index.ts +0 -29
  189. package/packages/effects/wood_cutter_sawdust/wood_cutter_sawdust.json +0 -592
  190. package/packages/effects/wood_peel_material_test/assets/runtime/woodPeelMaterialTest.v1.js +0 -196
  191. package/packages/effects/wood_peel_material_test/index.ts +0 -11
  192. package/packages/effects/wood_peel_material_test/wood_peel_material_test.json +0 -136
  193. package/packages/env.particle.forest_edge_fog/assets/runtime/particleEmitter.v1.js +0 -210
  194. package/packages/env.particle.forest_edge_fog/assets/textures/f12a23c4-b924-4322-a260-3d982428f1e8.png +0 -0
  195. package/packages/env.particle.forest_edge_fog/assets/textures/yuan.png +0 -0
  196. package/packages/env.particle.forest_edge_fog/effect.json +0 -854
  197. package/packages/env.particle.forest_edge_fog/media/preview.gif +0 -0
  198. package/packages/env.particle.forest_edge_fog/media/preview.mp4 +0 -0
  199. package/packages/env.particle.forest_edge_fog/media/preview.webm +0 -0
  200. package/packages/env.particle.forest_edge_fog/media/thumbnail.png +0 -0
  201. package/packages/env.particle.forest_edge_fog/metadata/description.json +0 -148
  202. package/packages/env.particle.forest_edge_fog/provenance/03-effect.original.json +0 -827
  203. package/packages/env.particle.forest_edge_fog/provenance/03-normalized-vfx-to-babylon-report.json +0 -196
  204. package/packages/env.particle.forest_edge_fog/provenance/04-preview-overrides.json +0 -432
  205. package/packages/env.particle.forest_edge_fog/provenance/04-preview-tuning-report.json +0 -28
  206. package/packages/env.particle.forest_edge_fog/provenance/asset-map.json +0 -124
  207. package/packages/env.particle.forest_edge_fog/provenance/lineage.json +0 -41
  208. package/packages/generation.ts +0 -14
  209. package/packages/index.ts +0 -14
  210. package/packages/legacy-particle-runtime.ts +0 -113
  211. package/packages/manifestRuntimePackage.ts +0 -519
  212. package/packages/registry.ts +0 -85
  213. package/packages/rendering.ts +0 -13
  214. package/packages/resource.particle.viscous_oil_suction/assets/runtime/top_disk_suction/particleEmitter.v1.js +0 -424
  215. package/packages/resource.particle.viscous_oil_suction/assets/textures/Glow ad.png +0 -0
  216. package/packages/resource.particle.viscous_oil_suction/effect.json +0 -1254
  217. package/packages/resource.particle.viscous_oil_suction/media/preview.gif +0 -0
  218. package/packages/resource.particle.viscous_oil_suction/media/preview.mp4 +0 -0
  219. package/packages/resource.particle.viscous_oil_suction/media/preview.webm +0 -0
  220. package/packages/resource.particle.viscous_oil_suction/media/thumbnail.png +0 -0
  221. package/packages/resource.particle.viscous_oil_suction/metadata/description.json +0 -122
  222. package/packages/resource.particle.viscous_oil_suction/provenance/03-effect.original.json +0 -1051
  223. package/packages/resource.particle.viscous_oil_suction/provenance/03-normalized-vfx-to-babylon-report.json +0 -200
  224. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-overrides.json +0 -581
  225. package/packages/resource.particle.viscous_oil_suction/provenance/04-preview-tuning-report.json +0 -28
  226. package/packages/resource.particle.viscous_oil_suction/provenance/asset-map.json +0 -111
  227. package/packages/resource.particle.viscous_oil_suction/provenance/lineage.json +0 -45
  228. package/packages/types.ts +0 -195
  229. package/tooling/check-dist-runtime.mjs +0 -166
  230. package/tooling/generate-index.mjs +0 -55
  231. package/tooling/test-guardrails.mjs +0 -157
  232. package/tooling/validate-boundary.mjs +0 -92
  233. package/tooling/validate-effects.mjs +0 -304
  234. package/tooling/validate.mjs +0 -53
@@ -1,592 +0,0 @@
1
- {
2
- "schemaVersion": "vfx-effect-package/1.0",
3
- "id": "build.particle.wood_crusher_sawdust",
4
- "name": {
5
- "zh": "粉碎机木粉",
6
- "en": "Wood Crusher Sawdust"
7
- },
8
- "source": {
9
- "engine": "babylon",
10
- "engineVersion": "8.56.2",
11
- "projectPath": "D:/project/lumber_order",
12
- "rootAsset": "src/assets/vfx/effects/wood_crusher_sawdust",
13
- "sourceId": "lumber_order/wood_crusher_sawdust",
14
- "extractedAt": "2026-06-02T00:00:00.000Z",
15
- "extractorVersion": "manual-lumber-order-vfx/0.1.0",
16
- "canonicalSource": "local",
17
- "legacyId": null,
18
- "previousIds": []
19
- },
20
- "assets": {
21
- "textures": [
22
- {
23
- "kind": "texture",
24
- "id": "wood_crusher_sawdust_dust",
25
- "packagePath": "assets/textures/wood_crusher_sawdust_dust.png",
26
- "sourcePath": "src/assets/vfx/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_dust.png",
27
- "sourceId": "generated-white-soft-sawdust-alpha",
28
- "width": 128,
29
- "height": 128
30
- },
31
- {
32
- "kind": "texture",
33
- "id": "wood_crusher_sawdust_fiber",
34
- "packagePath": "assets/textures/wood_crusher_sawdust_fiber.png",
35
- "sourcePath": "src/assets/vfx/effects/wood_crusher_sawdust/assets/textures/wood_crusher_sawdust_fiber.png",
36
- "sourceId": "generated-white-thin-wood-fiber-alpha",
37
- "width": 64,
38
- "height": 64
39
- }
40
- ],
41
- "materials": [],
42
- "meshes": [],
43
- "shaders": [],
44
- "sounds": [],
45
- "scripts": [
46
- {
47
- "kind": "script",
48
- "id": "particle_emitter_v1",
49
- "packagePath": "assets/runtime/particleEmitter.v1.js",
50
- "runtimeId": "particleEmitter/v1",
51
- "engine": "babylon",
52
- "moduleFormat": "esm",
53
- "exports": [
54
- "createParticleEmitterRuntime",
55
- "runtimeContract"
56
- ],
57
- "mimeType": "text/javascript"
58
- }
59
- ],
60
- "raw": []
61
- },
62
- "emitters": [
63
- {
64
- "name": "wood_crusher_sawdust_dust",
65
- "sourceNodeName": "wood_crusher_sawdust_dust",
66
- "enabled": true,
67
- "deterministic": false,
68
- "blendMode": "STANDARD",
69
- "particleTexturePath": "assets/textures/wood_crusher_sawdust_dust.png",
70
- "capacity": 128,
71
- "manualEmitCount": 46,
72
- "emitRate": 0,
73
- "effectScale": 0.82,
74
- "minSize": 0.14,
75
- "maxSize": 0.26,
76
- "minLifeTime": 0.42,
77
- "maxLifeTime": 0.78,
78
- "minEmitPower": 0.32,
79
- "maxEmitPower": 0.72,
80
- "updateSpeed": 0.016666666666666666,
81
- "gravity": {
82
- "x": 0,
83
- "y": -0.08,
84
- "z": 0
85
- },
86
- "shape": {
87
- "sourceType": "Box",
88
- "sourceEnum": 0,
89
- "radius": 1,
90
- "angle": 0,
91
- "type": "Box",
92
- "direction1": {
93
- "x": -0.22,
94
- "y": 0.26,
95
- "z": -0.14
96
- },
97
- "direction2": {
98
- "x": 0.22,
99
- "y": 0.58,
100
- "z": 0.14
101
- },
102
- "minEmitBox": {
103
- "x": -0.24,
104
- "y": 0.04,
105
- "z": -0.1
106
- },
107
- "maxEmitBox": {
108
- "x": 0.24,
109
- "y": 0.16,
110
- "z": 0.1
111
- },
112
- "radiusRange": 0
113
- },
114
- "spriteSheet": {
115
- "enabled": false
116
- },
117
- "alphaKeys": [
118
- {
119
- "time": 0,
120
- "alpha": 0
121
- },
122
- {
123
- "time": 0.1,
124
- "alpha": 0.72
125
- },
126
- {
127
- "time": 0.48,
128
- "alpha": 0.42
129
- },
130
- {
131
- "time": 1,
132
- "alpha": 0
133
- }
134
- ],
135
- "sizeKeys": [
136
- {
137
- "time": 0,
138
- "size": 1
139
- },
140
- {
141
- "time": 0.45,
142
- "size": 2.2
143
- },
144
- {
145
- "time": 1,
146
- "size": 3.1
147
- }
148
- ],
149
- "renderColor": {
150
- "color": {
151
- "r": 0.82,
152
- "g": 0.68,
153
- "b": 0.45,
154
- "a": 0.72
155
- },
156
- "colorIntensity": 1,
157
- "alphaIntensity": 1
158
- },
159
- "minInitialRotation": 0,
160
- "maxInitialRotation": 6.283185307179586,
161
- "minAngularSpeed": -0.45,
162
- "maxAngularSpeed": 0.45,
163
- "source": {
164
- "simulationSpace": 1,
165
- "renderMode": 0,
166
- "alignSpace": 2,
167
- "normalizedVfxEmitterId": "wood_crusher_sawdust_dust"
168
- },
169
- "sourceMap": null,
170
- "runtime": {
171
- "stopAfterSeconds": 0.96,
172
- "disposeOnComplete": true
173
- }
174
- },
175
- {
176
- "name": "wood_crusher_sawdust_fiber",
177
- "sourceNodeName": "wood_crusher_sawdust_fiber",
178
- "enabled": true,
179
- "deterministic": false,
180
- "blendMode": "STANDARD",
181
- "particleTexturePath": "assets/textures/wood_crusher_sawdust_fiber.png",
182
- "capacity": 56,
183
- "manualEmitCount": 18,
184
- "emitRate": 0,
185
- "effectScale": 0.82,
186
- "minSize": 0.055,
187
- "maxSize": 0.085,
188
- "minScaleX": 0.85,
189
- "maxScaleX": 1.35,
190
- "minScaleY": 0.42,
191
- "maxScaleY": 0.62,
192
- "minLifeTime": 0.26,
193
- "maxLifeTime": 0.46,
194
- "minEmitPower": 0.78,
195
- "maxEmitPower": 1.36,
196
- "updateSpeed": 0.016666666666666666,
197
- "gravity": {
198
- "x": 0,
199
- "y": -2.6,
200
- "z": 0
201
- },
202
- "shape": {
203
- "sourceType": "Box",
204
- "sourceEnum": 0,
205
- "radius": 1,
206
- "angle": 0,
207
- "type": "Box",
208
- "direction1": {
209
- "x": -0.55,
210
- "y": 0.42,
211
- "z": -0.22
212
- },
213
- "direction2": {
214
- "x": 0.55,
215
- "y": 0.92,
216
- "z": 0.22
217
- },
218
- "minEmitBox": {
219
- "x": -0.2,
220
- "y": 0.04,
221
- "z": -0.08
222
- },
223
- "maxEmitBox": {
224
- "x": 0.2,
225
- "y": 0.13,
226
- "z": 0.08
227
- },
228
- "radiusRange": 0
229
- },
230
- "spriteSheet": {
231
- "enabled": false
232
- },
233
- "alphaKeys": [
234
- {
235
- "time": 0,
236
- "alpha": 0.96
237
- },
238
- {
239
- "time": 0.72,
240
- "alpha": 0.84
241
- },
242
- {
243
- "time": 1,
244
- "alpha": 0
245
- }
246
- ],
247
- "sizeKeys": [
248
- {
249
- "time": 0,
250
- "size": 1
251
- },
252
- {
253
- "time": 1,
254
- "size": 0.52
255
- }
256
- ],
257
- "renderColor": {
258
- "color": {
259
- "r": 0.75,
260
- "g": 0.46,
261
- "b": 0.22,
262
- "a": 0.94
263
- },
264
- "colorIntensity": 1,
265
- "alphaIntensity": 1
266
- },
267
- "minInitialRotation": 0,
268
- "maxInitialRotation": 6.283185307179586,
269
- "minAngularSpeed": -7,
270
- "maxAngularSpeed": 7,
271
- "source": {
272
- "simulationSpace": 1,
273
- "renderMode": 0,
274
- "alignSpace": 2,
275
- "normalizedVfxEmitterId": "wood_crusher_sawdust_fiber"
276
- },
277
- "sourceMap": null,
278
- "runtime": {
279
- "stopAfterSeconds": 0.72,
280
- "disposeOnComplete": true
281
- }
282
- }
283
- ],
284
- "runtime": {
285
- "driver": "particle",
286
- "defaultMesh": null,
287
- "defaultOffset": {
288
- "x": 0,
289
- "y": 0,
290
- "z": 0
291
- },
292
- "start": [
293
- "Instantiate Babylon runtime for wood_crusher_sawdust"
294
- ],
295
- "update": [
296
- "Apply Babylon tunable parameter overrides"
297
- ],
298
- "stop": [
299
- "Stop and dispose runtime resources"
300
- ],
301
- "adapters": [
302
- {
303
- "id": "particleEmitter/v1",
304
- "engine": "babylon",
305
- "entry": "assets/runtime/particleEmitter.v1.js",
306
- "moduleFormat": "esm",
307
- "exports": [
308
- "createParticleEmitterRuntime",
309
- "runtimeContract"
310
- ]
311
- }
312
- ]
313
- },
314
- "tunableParams": [
315
- {
316
- "key": "wood_crusher_sawdust_dust.manualEmitCount",
317
- "labelZh": "木粉数量",
318
- "type": "number",
319
- "default": 46,
320
- "min": 1,
321
- "max": 160,
322
- "step": 1,
323
- "target": {
324
- "emitter": "wood_crusher_sawdust_dust",
325
- "property": "manualEmitCount",
326
- "operator": "set"
327
- }
328
- },
329
- {
330
- "key": "wood_crusher_sawdust_fiber.manualEmitCount",
331
- "labelZh": "细碎屑数量",
332
- "type": "number",
333
- "default": 18,
334
- "min": 0,
335
- "max": 80,
336
- "step": 1,
337
- "target": {
338
- "emitter": "wood_crusher_sawdust_fiber",
339
- "property": "manualEmitCount",
340
- "operator": "set"
341
- }
342
- },
343
- {
344
- "key": "wood_crusher_sawdust_dust.renderColor.color",
345
- "labelZh": "木粉颜色",
346
- "type": "color",
347
- "default": "#d1ad73",
348
- "target": {
349
- "emitter": "wood_crusher_sawdust_dust",
350
- "property": "renderColor.color",
351
- "operator": "set"
352
- }
353
- },
354
- {
355
- "key": "wood_crusher_sawdust_fiber.renderColor.color",
356
- "labelZh": "细碎屑颜色",
357
- "type": "color",
358
- "default": "#bf7538",
359
- "target": {
360
- "emitter": "wood_crusher_sawdust_fiber",
361
- "property": "renderColor.color",
362
- "operator": "set"
363
- }
364
- },
365
- {
366
- "key": "wood_crusher_sawdust_dust.sizeScale",
367
- "labelZh": "木粉大小",
368
- "type": "number",
369
- "default": 1,
370
- "min": 0.2,
371
- "max": 4,
372
- "step": 0.01,
373
- "targets": [
374
- {
375
- "emitter": "wood_crusher_sawdust_dust",
376
- "property": "minSize",
377
- "operator": "scaleDefault",
378
- "defaultValue": 0.14
379
- },
380
- {
381
- "emitter": "wood_crusher_sawdust_dust",
382
- "property": "maxSize",
383
- "operator": "scaleDefault",
384
- "defaultValue": 0.26
385
- }
386
- ]
387
- },
388
- {
389
- "key": "wood_crusher_sawdust_fiber.sizeScale",
390
- "labelZh": "细碎屑大小",
391
- "type": "number",
392
- "default": 1,
393
- "min": 0.2,
394
- "max": 4,
395
- "step": 0.01,
396
- "targets": [
397
- {
398
- "emitter": "wood_crusher_sawdust_fiber",
399
- "property": "minSize",
400
- "operator": "scaleDefault",
401
- "defaultValue": 0.055
402
- },
403
- {
404
- "emitter": "wood_crusher_sawdust_fiber",
405
- "property": "maxSize",
406
- "operator": "scaleDefault",
407
- "defaultValue": 0.085
408
- }
409
- ]
410
- },
411
- {
412
- "key": "wood_crusher_sawdust.scale",
413
- "labelZh": "整体缩放",
414
- "type": "number",
415
- "default": 0.82,
416
- "min": 0.1,
417
- "max": 4,
418
- "step": 0.01,
419
- "targets": [
420
- {
421
- "emitter": "wood_crusher_sawdust_dust",
422
- "property": "effectScale",
423
- "operator": "set"
424
- },
425
- {
426
- "emitter": "wood_crusher_sawdust_fiber",
427
- "property": "effectScale",
428
- "operator": "set"
429
- }
430
- ]
431
- },
432
- {
433
- "key": "wood_crusher_sawdust_dust.maxLifeTime",
434
- "labelZh": "木粉生命周期",
435
- "type": "number",
436
- "default": 0.78,
437
- "min": 0.08,
438
- "max": 3,
439
- "step": 0.01,
440
- "unit": "s",
441
- "target": {
442
- "emitter": "wood_crusher_sawdust_dust",
443
- "property": "maxLifeTime",
444
- "operator": "set"
445
- }
446
- },
447
- {
448
- "key": "wood_crusher_sawdust_fiber.maxLifeTime",
449
- "labelZh": "细碎屑生命周期",
450
- "type": "number",
451
- "default": 0.46,
452
- "min": 0.08,
453
- "max": 2,
454
- "step": 0.01,
455
- "unit": "s",
456
- "target": {
457
- "emitter": "wood_crusher_sawdust_fiber",
458
- "property": "maxLifeTime",
459
- "operator": "set"
460
- }
461
- },
462
- {
463
- "key": "wood_crusher_sawdust_dust.maxEmitPower",
464
- "labelZh": "木粉喷散速度",
465
- "type": "number",
466
- "default": 0.72,
467
- "min": 0,
468
- "max": 4,
469
- "step": 0.01,
470
- "target": {
471
- "emitter": "wood_crusher_sawdust_dust",
472
- "property": "maxEmitPower",
473
- "operator": "set"
474
- }
475
- },
476
- {
477
- "key": "wood_crusher_sawdust_fiber.maxEmitPower",
478
- "labelZh": "细碎屑飞溅速度",
479
- "type": "number",
480
- "default": 1.36,
481
- "min": 0,
482
- "max": 8,
483
- "step": 0.01,
484
- "target": {
485
- "emitter": "wood_crusher_sawdust_fiber",
486
- "property": "maxEmitPower",
487
- "operator": "set"
488
- }
489
- },
490
- {
491
- "key": "wood_crusher_sawdust_fiber.burstSpread",
492
- "labelZh": "细碎屑炸开幅度",
493
- "type": "number",
494
- "default": 1,
495
- "min": 0,
496
- "max": 4,
497
- "step": 0.01,
498
- "targets": [
499
- {
500
- "emitter": "wood_crusher_sawdust_fiber",
501
- "property": "shape.direction1",
502
- "operator": "scaleVectorDefault",
503
- "defaultValue": {
504
- "x": -0.55,
505
- "y": 0.42,
506
- "z": -0.22,
507
- "scaleAxes": {
508
- "x": true,
509
- "y": false,
510
- "z": true
511
- }
512
- }
513
- },
514
- {
515
- "emitter": "wood_crusher_sawdust_fiber",
516
- "property": "shape.direction2",
517
- "operator": "scaleVectorDefault",
518
- "defaultValue": {
519
- "x": 0.55,
520
- "y": 0.92,
521
- "z": 0.22,
522
- "scaleAxes": {
523
- "x": true,
524
- "y": false,
525
- "z": true
526
- }
527
- }
528
- }
529
- ]
530
- }
531
- ],
532
- "babylon": {
533
- "driver": "particle",
534
- "previewConfig": {
535
- "textureUrl": "assets/textures/wood_crusher_sawdust_dust.png",
536
- "emitterCount": 2,
537
- "effectFile": "wood_crusher_sawdust.json",
538
- "normalizedVfx": null
539
- }
540
- },
541
- "review": {
542
- "status": "tweaked",
543
- "artistNotes": [
544
- "Two-emitter sawdust effect for wood being ground inside the crusher rollers.",
545
- "Dust uses a white alpha mask so the debug color is not polluted by the source texture.",
546
- "Fiber layer is intentionally small and thin to avoid reading as large wood blocks."
547
- ],
548
- "approvedBy": null,
549
- "approvedAt": null
550
- },
551
- "recording": {
552
- "provider": "local-placeholder",
553
- "recordedAt": "2026-06-02T00:00:00.000Z",
554
- "mimeType": "image/png",
555
- "durationSec": 0.96,
556
- "fps": 0,
557
- "media": {
558
- "previewVideo": null,
559
- "previewWebm": null,
560
- "previewMp4": null,
561
- "previewGif": null,
562
- "thumbnail": "media/thumbnail.png",
563
- "contactSheet": "media/contact-sheet.png",
564
- "gcsUri": null
565
- }
566
- },
567
- "search": {
568
- "tags": [
569
- "babylon",
570
- "particle",
571
- "wood crusher",
572
- "sawdust",
573
- "wood fiber",
574
- "casual game",
575
- "ua game"
576
- ],
577
- "descriptionEn": "A compact sawdust puff with tiny wood fibers for wood being crushed between machine rollers.",
578
- "useCases": [
579
- "wood crusher processing",
580
- "machine roller grinding feedback",
581
- "wood plank production feedback"
582
- ],
583
- "negativeUseCases": [
584
- "large explosion",
585
- "tree falling dust",
586
- "large wood chunks",
587
- "fire",
588
- "magic"
589
- ]
590
- },
591
- "legacyIds": []
592
- }