@vworlds/vecs-physics 1.0.37 → 1.0.39
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/adapter/engine.d.ts +14 -4
- package/adapter/engine.js +9 -11
- package/adapter/engine.js.map +1 -1
- package/adapter/queries.d.ts +1 -1
- package/adapter/queries.js +1 -1
- package/adapter/queries.js.map +1 -1
- package/adapter/runtime.js +1 -1
- package/adapter/runtime.js.map +1 -1
- package/{components/body.js → body/components.js} +2 -2
- package/body/components.js.map +1 -0
- package/body/lifecycle.d.ts +4 -0
- package/body/lifecycle.js +153 -0
- package/body/lifecycle.js.map +1 -0
- package/body/mass.d.ts +4 -0
- package/body/mass.js +45 -0
- package/body/mass.js.map +1 -0
- package/body/module.d.ts +4 -0
- package/body/module.js +22 -0
- package/body/module.js.map +1 -0
- package/body/pose_in.d.ts +4 -0
- package/body/pose_in.js +90 -0
- package/body/pose_in.js.map +1 -0
- package/body/pose_out.d.ts +4 -0
- package/body/pose_out.js +59 -0
- package/body/pose_out.js.map +1 -0
- package/{components/body_tuning.js → body/tuning.js} +1 -1
- package/body/tuning.js.map +1 -0
- package/core/module.d.ts +30 -0
- package/core/module.js +77 -0
- package/core/module.js.map +1 -0
- package/core/reaper.d.ts +4 -0
- package/core/reaper.js +45 -0
- package/core/reaper.js.map +1 -0
- package/core/step.d.ts +4 -0
- package/core/step.js +22 -0
- package/core/step.js.map +1 -0
- package/debug/validation.d.ts +4 -0
- package/{systems/debug.js → debug/validation.js} +51 -35
- package/debug/validation.js.map +1 -0
- package/{components/events.js → events/components.js} +1 -1
- package/events/components.js.map +1 -0
- package/events/module.d.ts +4 -0
- package/events/module.js +13 -0
- package/events/module.js.map +1 -0
- package/events/opt_in.d.ts +4 -0
- package/events/opt_in.js +86 -0
- package/events/opt_in.js.map +1 -0
- package/events/publish.d.ts +4 -0
- package/{systems/events.js → events/publish.js} +43 -34
- package/events/publish.js.map +1 -0
- package/{components/force.js → forces/components.js} +1 -1
- package/forces/components.js.map +1 -0
- package/forces/gather.d.ts +4 -0
- package/forces/gather.js +42 -0
- package/forces/gather.js.map +1 -0
- package/forces/impulses.d.ts +4 -0
- package/forces/impulses.js +79 -0
- package/forces/impulses.js.map +1 -0
- package/forces/module.d.ts +4 -0
- package/forces/module.js +20 -0
- package/forces/module.js.map +1 -0
- package/forces/zero.d.ts +4 -0
- package/forces/zero.js +34 -0
- package/forces/zero.js.map +1 -0
- package/index.d.ts +9 -8
- package/index.js +10 -8
- package/index.js.map +1 -1
- package/joints/components.d.ts +116 -0
- package/joints/components.js +150 -0
- package/joints/components.js.map +1 -0
- package/joints/features.d.ts +4 -0
- package/joints/features.js +158 -0
- package/joints/features.js.map +1 -0
- package/joints/lifecycle.d.ts +4 -0
- package/joints/lifecycle.js +191 -0
- package/joints/lifecycle.js.map +1 -0
- package/joints/module.d.ts +4 -0
- package/joints/module.js +33 -0
- package/joints/module.js.map +1 -0
- package/joints/predicates.d.ts +9 -0
- package/joints/predicates.js +10 -0
- package/joints/predicates.js.map +1 -0
- package/{components/target.js → kinematic/components.js} +1 -1
- package/kinematic/components.js.map +1 -0
- package/kinematic/module.d.ts +4 -0
- package/kinematic/module.js +16 -0
- package/kinematic/module.js.map +1 -0
- package/kinematic/targets.d.ts +4 -0
- package/{systems/kinematic.js → kinematic/targets.js} +27 -20
- package/kinematic/targets.js.map +1 -0
- package/{components/material.js → materials/components.js} +1 -1
- package/materials/components.js.map +1 -0
- package/materials/module.d.ts +4 -0
- package/materials/module.js +18 -0
- package/materials/module.js.map +1 -0
- package/materials/sync.d.ts +4 -0
- package/materials/sync.js +136 -0
- package/materials/sync.js.map +1 -0
- package/module.d.ts +3 -27
- package/module.js +45 -141
- package/module.js.map +1 -1
- package/package.json +2 -2
- package/shapes/chain.d.ts +8 -0
- package/{systems/chain_lifecycle.js → shapes/chain.js} +41 -31
- package/shapes/chain.js.map +1 -0
- package/{components/geometry.js → shapes/components.js} +2 -2
- package/{components/geometry.js.map → shapes/components.js.map} +1 -1
- package/{systems/shape_lifecycle.d.ts → shapes/lifecycle.d.ts} +7 -5
- package/{systems/shape_lifecycle.js → shapes/lifecycle.js} +53 -42
- package/shapes/lifecycle.js.map +1 -0
- package/shapes/module.d.ts +4 -0
- package/shapes/module.js +34 -0
- package/shapes/module.js.map +1 -0
- package/{components/shape_pose.js → shapes/pose_components.js} +1 -1
- package/shapes/pose_components.js.map +1 -0
- package/shapes/pose_sync.d.ts +4 -0
- package/shapes/pose_sync.js +70 -0
- package/shapes/pose_sync.js.map +1 -0
- package/{systems/shape_predicates.d.ts → shapes/predicates.d.ts} +2 -2
- package/{systems/shape_predicates.js → shapes/predicates.js} +3 -3
- package/shapes/predicates.js.map +1 -0
- package/util/resolve_body.js +1 -1
- package/components/body.js.map +0 -1
- package/components/body_tuning.js.map +0 -1
- package/components/events.js.map +0 -1
- package/components/force.js.map +0 -1
- package/components/material.js.map +0 -1
- package/components/shape_pose.js.map +0 -1
- package/components/target.js.map +0 -1
- package/systems/chain_lifecycle.d.ts +0 -6
- package/systems/chain_lifecycle.js.map +0 -1
- package/systems/debug.d.ts +0 -4
- package/systems/debug.js.map +0 -1
- package/systems/event_opt_in_sync.d.ts +0 -3
- package/systems/event_opt_in_sync.js +0 -73
- package/systems/event_opt_in_sync.js.map +0 -1
- package/systems/events.d.ts +0 -3
- package/systems/events.js.map +0 -1
- package/systems/forces.d.ts +0 -3
- package/systems/forces.js +0 -35
- package/systems/forces.js.map +0 -1
- package/systems/impulse_accumulate.d.ts +0 -4
- package/systems/impulse_accumulate.js +0 -74
- package/systems/impulse_accumulate.js.map +0 -1
- package/systems/impulse_zero.d.ts +0 -3
- package/systems/impulse_zero.js +0 -27
- package/systems/impulse_zero.js.map +0 -1
- package/systems/index.d.ts +0 -15
- package/systems/index.js +0 -80
- package/systems/index.js.map +0 -1
- package/systems/kinematic.d.ts +0 -3
- package/systems/kinematic.js.map +0 -1
- package/systems/lifecycle.d.ts +0 -4
- package/systems/lifecycle.js +0 -177
- package/systems/lifecycle.js.map +0 -1
- package/systems/mass_recompute.d.ts +0 -3
- package/systems/mass_recompute.js +0 -38
- package/systems/mass_recompute.js.map +0 -1
- package/systems/material_filter_sync.d.ts +0 -3
- package/systems/material_filter_sync.js +0 -129
- package/systems/material_filter_sync.js.map +0 -1
- package/systems/pose_sync_in.d.ts +0 -3
- package/systems/pose_sync_in.js +0 -79
- package/systems/pose_sync_in.js.map +0 -1
- package/systems/pose_sync_out.d.ts +0 -3
- package/systems/pose_sync_out.js +0 -52
- package/systems/pose_sync_out.js.map +0 -1
- package/systems/shape_lifecycle.js.map +0 -1
- package/systems/shape_pose_sync.d.ts +0 -3
- package/systems/shape_pose_sync.js +0 -63
- package/systems/shape_pose_sync.js.map +0 -1
- package/systems/shape_predicates.js.map +0 -1
- package/systems/step.d.ts +0 -3
- package/systems/step.js +0 -15
- package/systems/step.js.map +0 -1
- /package/{components/body.d.ts → body/components.d.ts} +0 -0
- /package/{components/body_tuning.d.ts → body/tuning.d.ts} +0 -0
- /package/{components/events.d.ts → events/components.d.ts} +0 -0
- /package/{components/force.d.ts → forces/components.d.ts} +0 -0
- /package/{components/target.d.ts → kinematic/components.d.ts} +0 -0
- /package/{components/material.d.ts → materials/components.d.ts} +0 -0
- /package/{components/geometry.d.ts → shapes/components.d.ts} +0 -0
- /package/{components/shape_pose.d.ts → shapes/pose_components.d.ts} +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"event_opt_in_sync.js","sourceRoot":"","sources":["../../../../src/systems/event_opt_in_sync.ts"],"names":[],"mappings":"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"}
|
package/systems/events.d.ts
DELETED
package/systems/events.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../../../src/systems/events.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACjF,OAAO,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAc5E,MAAM,UAAU,aAAa,CAAC,KAAY,EAAE,MAAqB,EAAE,KAAa;IAC9E,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,eAAe,CAAC;SACvB,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,EAAE;QACR,MAAM,cAAc,GAAG,IAAI,GAAG,EAAO,CAAC;QACtC,MAAM,aAAa,GAAG,IAAI,GAAG,EAAO,CAAC;QACrC,MAAM,UAAU,GAAG,IAAI,GAAG,EAAO,CAAC;QAElC,0BAA0B,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,UAAU,CAAC,CAAC;QACtE,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAElD,YAAY,CAAC,KAAK,EAAE,cAAc,EAAE,aAAa,CAAC,CAAC;QACnD,YAAY,CAAC,KAAK,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;QACjD,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,SAAS,CAAC,CAAC;QAE3C,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,EAAE,cAAc,CAAC,CAAC;QAC9E,0BAA0B,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,aAAa,CAAC,CAAC;QAC3E,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QAElE,+DAA+D;QAC/D,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,CAAC;QAClC,KAAK,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;YACjC,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,CAAC;QACjC,KAAK,MAAM,GAAG,IAAI,aAAa,EAAE,CAAC;YAChC,MAAM,CAAC,iBAAiB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,MAAM,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC9B,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;YAC7B,MAAM,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjC,CAAC;IACH,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED,0DAA0D;AAC1D,8EAA8E;AAC9E,qFAAqF;AACrF,wCAAwC;AACxC,SAAS,0BAA0B,CACjC,KAAY,EACZ,MAAqB,EACrB,cAAwB,EACxB,UAAoB;IAEpB,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,wBAAwB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,CAAC;gBACH,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC;oBAAS,CAAC;gBACT,eAAe,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;QACH,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAChE,CAAC;QAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,CAAC;gBACH,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACjD,CAAC;oBAAS,CAAC;gBACT,KAAK,CAAC,MAAM,EAAE,CAAC;YACjB,CAAC;QACH,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,MAAqB,EAAE,OAAiB;IACjF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,uBAAuB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IACpE,IAAI,CAAC;QACH,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAC5E,CAAC;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,EAAE,CAAC;YACzC,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QACxE,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,MAAM,EAAE,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAA0C,EAC1C,IAAqB;IAErB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IACrD,mBAAmB,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CACtB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAAkB,EAClB,IAAqB;IAErB,MAAM,MAAM,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;IAC/F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,IAAI,MAAM,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAClD,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAA6B,CAAC;IACpE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACxC,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CACnB,KAAY,EACZ,MAAqB,EACrB,OAAiB,EACjB,KAAsB;IAEtB,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;IAC3F,IAAI,OAAO,KAAK,SAAS,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QACnD,OAAO;IACT,CAAC;IAED,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAClD,eAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,mBAAmB,CAC1B,OAAiB,EACjB,MAAc,EACd,KAAa,EACb,IAAqB;IAErB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,CAA8B,CAAC;IACtE,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACtB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC/B,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7B,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CACtB,OAAiB,EACjB,MAAc,EACd,KAAa,EACb,KAAsB;IAEtB,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,SAAS,CAA0B,CAAC;IAC9D,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAC7B,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC;QACf,KAAK;QACL,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAChB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;QACvB,KAAK,EAAE,KAAK,CAAC,aAAa;KAC3B,CAAC,CAAC;AACL,CAAC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,QAAyB;IAC5D,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzC,IAAI,MAAM,KAAK,SAAS,IAAI,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CACnB,KAAY,EACZ,OAAiB,EACjB,SAAsB;IAEtB,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;QAC/B,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,SAAS,CAAC,CAAC;IACjD,CAAC;AACH,CAAC;AAED,SAAS,2BAA2B,CAClC,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,aAAa,CAA8B,CAAC;QAC1F,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,0BAA0B,CACjC,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,YAAY,CAA6B,CAAC;QACxF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;YACxB,MAAM,CAAC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACxB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,uBAAuB,CAC9B,KAAY,EACZ,iBAA2B,EAC3B,OAAiB;IAEjB,KAAK,MAAM,QAAQ,IAAI,iBAAiB,EAAE,CAAC;QACzC,IAAI,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC1B,SAAS;QACX,CAAC;QACD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,GAAG,CAAC,SAAS,CAA0B,CAAC;QAClF,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,KAA8B;IACrD,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;AACnB,CAAC;AAED,SAAS,WAAW,CAAC,MAAc;IACjC,OAAO,MAAM,CAAC,SAAS,CAAC;AAC1B,CAAC"}
|
package/systems/forces.d.ts
DELETED
package/systems/forces.js
DELETED
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ChildOf } from "@vworlds/vecs";
|
|
2
|
-
import { Body } from "../components/body.js";
|
|
3
|
-
import { Force, Torque } from "../components/force.js";
|
|
4
|
-
import { scr_b2Vec2 } from "../adapter/runtime.js";
|
|
5
|
-
import { PhysicsSystemTag } from "../adapter/engine.js";
|
|
6
|
-
const forceTargetPredicate = { any: [Body, { parent: Body }] };
|
|
7
|
-
export function installForceGather(world, engine, phase) {
|
|
8
|
-
const forceSystem = world
|
|
9
|
-
.system("PhysicsForceGather:Force")
|
|
10
|
-
.with(Force, forceTargetPredicate)
|
|
11
|
-
.phase(phase);
|
|
12
|
-
forceSystem.entity.add(PhysicsSystemTag);
|
|
13
|
-
forceSystem.each([Force, Body, { target: [ChildOf, [Body]] }], (_entity, [force, body, parentBody]) => {
|
|
14
|
-
const bodyId = body?._bodyId ?? parentBody?._bodyId;
|
|
15
|
-
if (bodyId === undefined) {
|
|
16
|
-
return;
|
|
17
|
-
}
|
|
18
|
-
const vec = scr_b2Vec2[0];
|
|
19
|
-
vec.Set(force.x, force.y);
|
|
20
|
-
engine.box2d.b2Body_ApplyForceToCenter(bodyId, vec, force.wake);
|
|
21
|
-
});
|
|
22
|
-
const torqueSystem = world
|
|
23
|
-
.system("PhysicsForceGather:Torque")
|
|
24
|
-
.with(Torque, forceTargetPredicate)
|
|
25
|
-
.phase(phase)
|
|
26
|
-
.each([Torque, Body, { target: [ChildOf, [Body]] }], (_entity, [torque, body, parentBody]) => {
|
|
27
|
-
const bodyId = body?._bodyId ?? parentBody?._bodyId;
|
|
28
|
-
if (bodyId === undefined) {
|
|
29
|
-
return;
|
|
30
|
-
}
|
|
31
|
-
engine.box2d.b2Body_ApplyTorque(bodyId, torque.value, torque.wake);
|
|
32
|
-
});
|
|
33
|
-
torqueSystem.entity.add(PhysicsSystemTag);
|
|
34
|
-
}
|
|
35
|
-
//# sourceMappingURL=forces.js.map
|
package/systems/forces.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"forces.js","sourceRoot":"","sources":["../../../../src/systems/forces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAA2B,MAAM,eAAe,CAAC;AAEjE,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAE5E,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAAW,CAAC;AAExE,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,MAAqB,EAAE,KAAa;IACnF,MAAM,WAAW,GAAG,KAAK;SACtB,MAAM,CAAC,0BAA0B,CAAC;SAClC,IAAI,CAAC,KAAK,EAAE,oBAAoB,CAAC;SACjC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAEzC,WAAW,CAAC,IAAI,CACd,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAC5C,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QACrC,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,GAAG,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;QAC1B,GAAG,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC;QAC1B,MAAM,CAAC,KAAK,CAAC,yBAAyB,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;IAClE,CAAC,CACF,CAAC;IAEF,MAAM,YAAY,GAAG,KAAK;SACvB,MAAM,CAAC,2BAA2B,CAAC;SACnC,IAAI,CAAC,MAAM,EAAE,oBAAoB,CAAC;SAClC,KAAK,CAAC,KAAK,CAAC;SACZ,IAAI,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;QAC3F,MAAM,MAAM,GAAG,IAAI,EAAE,OAAO,IAAI,UAAU,EAAE,OAAO,CAAC;QACpD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACzB,OAAO;QACT,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrE,CAAC,CAAC,CAAC;IACL,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AAC5C,CAAC"}
|
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { type Entity, type World } from "@vworlds/vecs";
|
|
2
|
-
import { type PhysicsEngine } from "../adapter/engine.js";
|
|
3
|
-
export declare function installImpulseAccumulate(world: World, engine: PhysicsEngine, phase: Entity): void;
|
|
4
|
-
export declare function registerImpulseHooks(world: World, engine: PhysicsEngine): void;
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { AngularImpulse, Impulse } from "../components/force.js";
|
|
2
|
-
import { scr_b2Vec2 } from "../adapter/runtime.js";
|
|
3
|
-
import { PhysicsSystemTag } from "../adapter/engine.js";
|
|
4
|
-
import { resolveBodyId } from "../util/resolve_body.js";
|
|
5
|
-
export function installImpulseAccumulate(world, engine, phase) {
|
|
6
|
-
const system = world
|
|
7
|
-
.system("PhysicsImpulseAccumulate")
|
|
8
|
-
.phase(phase)
|
|
9
|
-
.run(() => {
|
|
10
|
-
drainLinearImpulses(engine);
|
|
11
|
-
drainAngularImpulses(engine);
|
|
12
|
-
});
|
|
13
|
-
system.entity.add(PhysicsSystemTag);
|
|
14
|
-
}
|
|
15
|
-
export function registerImpulseHooks(world, engine) {
|
|
16
|
-
world.component(Impulse).onSet((entity, impulse) => {
|
|
17
|
-
const bodyId = resolveBodyId(entity);
|
|
18
|
-
if (bodyId === undefined) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
engine.impulseEntitiesThisStep.add(entity.eid);
|
|
22
|
-
const accumulator = getLinearAccumulator(engine, bodyId);
|
|
23
|
-
accumulator.x += impulse.x;
|
|
24
|
-
accumulator.y += impulse.y;
|
|
25
|
-
accumulator.wake || (accumulator.wake = impulse.wake);
|
|
26
|
-
});
|
|
27
|
-
world.component(AngularImpulse).onSet((entity, impulse) => {
|
|
28
|
-
const bodyId = resolveBodyId(entity);
|
|
29
|
-
if (bodyId === undefined) {
|
|
30
|
-
return;
|
|
31
|
-
}
|
|
32
|
-
engine.impulseEntitiesThisStep.add(entity.eid);
|
|
33
|
-
const accumulator = getAngularAccumulator(engine, bodyId);
|
|
34
|
-
accumulator.value += impulse.value;
|
|
35
|
-
accumulator.wake || (accumulator.wake = impulse.wake);
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
function drainLinearImpulses(engine) {
|
|
39
|
-
for (const [bodyId, impulse] of engine.pendingLinearImpulse) {
|
|
40
|
-
if (!engine.entityByBodyIndex.has(bodyId.index1)) {
|
|
41
|
-
continue;
|
|
42
|
-
}
|
|
43
|
-
const vec = scr_b2Vec2[0];
|
|
44
|
-
vec.Set(impulse.x, impulse.y);
|
|
45
|
-
engine.box2d.b2Body_ApplyLinearImpulseToCenter(bodyId, vec, impulse.wake);
|
|
46
|
-
}
|
|
47
|
-
engine.pendingLinearImpulse.clear();
|
|
48
|
-
}
|
|
49
|
-
function drainAngularImpulses(engine) {
|
|
50
|
-
for (const [bodyId, impulse] of engine.pendingAngularImpulse) {
|
|
51
|
-
if (!engine.entityByBodyIndex.has(bodyId.index1)) {
|
|
52
|
-
continue;
|
|
53
|
-
}
|
|
54
|
-
engine.box2d.b2Body_ApplyAngularImpulse(bodyId, impulse.value, impulse.wake);
|
|
55
|
-
}
|
|
56
|
-
engine.pendingAngularImpulse.clear();
|
|
57
|
-
}
|
|
58
|
-
function getLinearAccumulator(engine, bodyId) {
|
|
59
|
-
let accumulator = engine.pendingLinearImpulse.get(bodyId);
|
|
60
|
-
if (accumulator === undefined) {
|
|
61
|
-
accumulator = { x: 0, y: 0, wake: false };
|
|
62
|
-
engine.pendingLinearImpulse.set(bodyId, accumulator);
|
|
63
|
-
}
|
|
64
|
-
return accumulator;
|
|
65
|
-
}
|
|
66
|
-
function getAngularAccumulator(engine, bodyId) {
|
|
67
|
-
let accumulator = engine.pendingAngularImpulse.get(bodyId);
|
|
68
|
-
if (accumulator === undefined) {
|
|
69
|
-
accumulator = { value: 0, wake: false };
|
|
70
|
-
engine.pendingAngularImpulse.set(bodyId, accumulator);
|
|
71
|
-
}
|
|
72
|
-
return accumulator;
|
|
73
|
-
}
|
|
74
|
-
//# sourceMappingURL=impulse_accumulate.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"impulse_accumulate.js","sourceRoot":"","sources":["../../../../src/systems/impulse_accumulate.ts"],"names":[],"mappings":"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"}
|
package/systems/impulse_zero.js
DELETED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { AngularImpulse, Impulse } from "../components/force.js";
|
|
2
|
-
import { PhysicsSystemTag } from "../adapter/engine.js";
|
|
3
|
-
export function installImpulseZero(world, engine, phase) {
|
|
4
|
-
const system = world
|
|
5
|
-
.system("PhysicsImpulseZero")
|
|
6
|
-
.phase(phase)
|
|
7
|
-
.run(() => {
|
|
8
|
-
for (const eid of engine.impulseEntitiesThisStep) {
|
|
9
|
-
const entity = world.getEntity(eid);
|
|
10
|
-
if (entity === undefined) {
|
|
11
|
-
continue;
|
|
12
|
-
}
|
|
13
|
-
const imp = entity.get(Impulse);
|
|
14
|
-
if (imp !== undefined) {
|
|
15
|
-
imp.x = 0;
|
|
16
|
-
imp.y = 0;
|
|
17
|
-
}
|
|
18
|
-
const ai = entity.get(AngularImpulse);
|
|
19
|
-
if (ai !== undefined) {
|
|
20
|
-
ai.value = 0;
|
|
21
|
-
}
|
|
22
|
-
}
|
|
23
|
-
engine.impulseEntitiesThisStep.clear();
|
|
24
|
-
});
|
|
25
|
-
system.entity.add(PhysicsSystemTag);
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=impulse_zero.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"impulse_zero.js","sourceRoot":"","sources":["../../../../src/systems/impulse_zero.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAE5E,MAAM,UAAU,kBAAkB,CAAC,KAAY,EAAE,MAAqB,EAAE,KAAa;IACnF,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,oBAAoB,CAAC;SAC5B,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,EAAE;QACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACjD,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,SAAS;YACX,CAAC;YAED,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAwB,CAAC;YACvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;gBACtB,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;gBACV,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;YACZ,CAAC;YAED,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,cAAc,CAA+B,CAAC;YACpE,IAAI,EAAE,KAAK,SAAS,EAAE,CAAC;gBACrB,EAAE,CAAC,KAAK,GAAG,CAAC,CAAC;YACf,CAAC;QACH,CAAC;QAED,MAAM,CAAC,uBAAuB,CAAC,KAAK,EAAE,CAAC;IACzC,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC"}
|
package/systems/index.d.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { type Entity, type World } from "@vworlds/vecs";
|
|
2
|
-
import { type PhysicsEngine } from "../adapter/engine.js";
|
|
3
|
-
/** The three phases the physics systems split across. */
|
|
4
|
-
export interface PhysicsPhases {
|
|
5
|
-
preStep: Entity;
|
|
6
|
-
step: Entity;
|
|
7
|
-
postStep: Entity;
|
|
8
|
-
}
|
|
9
|
-
/** Options forwarded to {@link registerPhysicsSystems} from {@link PhysicsModule}. */
|
|
10
|
-
export interface PhysicsSystemsOptions {
|
|
11
|
-
/** Install `PhysicsDebugValidation` when `true`. Default `false`. */
|
|
12
|
-
debug?: boolean;
|
|
13
|
-
}
|
|
14
|
-
/** Register every physics system into `world`, bound to `engine`. */
|
|
15
|
-
export declare function registerPhysicsSystems(world: World, engine: PhysicsEngine, phases: PhysicsPhases, opts?: PhysicsSystemsOptions): void;
|
package/systems/index.js
DELETED
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
// Physics system installation. Creates all physics systems in their canonical
|
|
2
|
-
// run order and tags each one with `PhysicsSystemTag` so the pose-sync feedback
|
|
3
|
-
// suppression (`PhysicsPoseSyncIn.ignoreSource([PhysicsSystemTag])`) can filter
|
|
4
|
-
// the engine's own write-back. This is registration step 12 (ARCHITECTURE.md →
|
|
5
|
-
// _Component registration order_).
|
|
6
|
-
//
|
|
7
|
-
// Physics-pre phase order (creation order = run order within a phase):
|
|
8
|
-
// 1. PhysicsBodyLifecycle — body must exist before any shape is inserted
|
|
9
|
-
// 2. PhysicsShapeLifecycle — creates/destroys b2Shape records + broad-phase proxies
|
|
10
|
-
// 3. PhysicsChainLifecycle — creates/destroys b2Chain records + segment proxies
|
|
11
|
-
// 4. PhysicsMaterialFilterSync — propagates Material/Filter/Sensor updates
|
|
12
|
-
// 5. PhysicsEventOptInSync — runtime ContactEvents/HitEvents/SensorEvents add/remove (hooks)
|
|
13
|
-
// 6. PhysicsShapePoseSync — propagates ShapePosition/ShapeRotation updates
|
|
14
|
-
// 7. PhysicsPoseSyncIn — syncs Position/Rotation/Velocity into body sims
|
|
15
|
-
// 8. PhysicsKinematicTargets — sets target-convergence velocity on kinematic bodies (VP-20)
|
|
16
|
-
// 9. PhysicsForceGather:* — applies Force and Torque to body sims each step (VP-19)
|
|
17
|
-
// 10. PhysicsImpulseAccumulate — drains Impulse/AngularImpulse into pendingImpulses (VP-19)
|
|
18
|
-
// 11. PhysicsMassRecompute — recomputes mass for dirty bodies (last pre-step)
|
|
19
|
-
// 12. PhysicsDebugValidation — structural validation (ONLY when debug: true, VP-25)
|
|
20
|
-
//
|
|
21
|
-
// Physics-post phase order:
|
|
22
|
-
// 1. PhysicsPoseSyncOut — write simulated pose back to ECS
|
|
23
|
-
// 2. PhysicsEvents — fan raw event arrays out to ContactEvents/SensorEvents/HitEvents (VP-21b)
|
|
24
|
-
// 3. PhysicsImpulseZero — silently zero consumed Impulse/AngularImpulse (VP-19)
|
|
25
|
-
import { installChainLifecycle } from "./chain_lifecycle.js";
|
|
26
|
-
import { installDebugValidation } from "./debug.js";
|
|
27
|
-
import { installEventOptInSync } from "./event_opt_in_sync.js";
|
|
28
|
-
import { installEvents } from "./events.js";
|
|
29
|
-
import { installForceGather } from "./forces.js";
|
|
30
|
-
import { installImpulseAccumulate } from "./impulse_accumulate.js";
|
|
31
|
-
import { installImpulseZero } from "./impulse_zero.js";
|
|
32
|
-
import { installKinematicTargets } from "./kinematic.js";
|
|
33
|
-
import { installBodyLifecycle, installPhysicsReaper } from "./lifecycle.js";
|
|
34
|
-
import { installMassRecompute } from "./mass_recompute.js";
|
|
35
|
-
import { installMaterialFilterSync } from "./material_filter_sync.js";
|
|
36
|
-
import { installPoseSyncIn } from "./pose_sync_in.js";
|
|
37
|
-
import { installPoseSyncOut } from "./pose_sync_out.js";
|
|
38
|
-
import { installShapeLifecycle } from "./shape_lifecycle.js";
|
|
39
|
-
import { installShapePoseSync } from "./shape_pose_sync.js";
|
|
40
|
-
import { installStep } from "./step.js";
|
|
41
|
-
/** Register every physics system into `world`, bound to `engine`. */
|
|
42
|
-
export function registerPhysicsSystems(world, engine, phases, opts = {}) {
|
|
43
|
-
// physics-pre: lifecycle + sync systems in dependency order.
|
|
44
|
-
installBodyLifecycle(world, engine, phases.preStep);
|
|
45
|
-
installShapeLifecycle(world, engine, phases.preStep);
|
|
46
|
-
installChainLifecycle(world, engine, phases.preStep);
|
|
47
|
-
installMaterialFilterSync(world, engine, phases.preStep);
|
|
48
|
-
// physics-pre: keep event opt-in flags in sync when ContactEvents/HitEvents/
|
|
49
|
-
// SensorEvents are added/removed on a shape after creation (hook-based).
|
|
50
|
-
installEventOptInSync(world, engine, phases.preStep);
|
|
51
|
-
// physics-pre: reaper — perform all deferred b2Destroy* here, AFTER every
|
|
52
|
-
// exit/sync consumer above has run on the still-live handles, and BEFORE
|
|
53
|
-
// MassRecompute + the step. This is the single point where shape/chain/body
|
|
54
|
-
// slots are freed, so nothing recycles a slot mid-pass. See installPhysicsReaper.
|
|
55
|
-
installPhysicsReaper(world, engine, phases.preStep);
|
|
56
|
-
installShapePoseSync(world, engine, phases.preStep);
|
|
57
|
-
installPoseSyncIn(world, engine, phases.preStep);
|
|
58
|
-
// physics-pre: kinematic target drive after PoseSyncIn, before ForceGather (VP-20).
|
|
59
|
-
installKinematicTargets(world, engine, phases.preStep);
|
|
60
|
-
// physics-pre: force/impulse systems after KinematicTargets, before MassRecompute (VP-19).
|
|
61
|
-
installForceGather(world, engine, phases.preStep);
|
|
62
|
-
installImpulseAccumulate(world, engine, phases.preStep);
|
|
63
|
-
// physics-pre: mass recompute — last pre-step, after all lifecycle/sync/force.
|
|
64
|
-
installMassRecompute(world, engine, phases.preStep);
|
|
65
|
-
// physics-step: integrator.
|
|
66
|
-
installStep(world, engine, phases.step);
|
|
67
|
-
// physics-post: write simulated pose back to ECS.
|
|
68
|
-
installPoseSyncOut(world, engine, phases.postStep);
|
|
69
|
-
// physics-post: fan raw event arrays out to ECS event components (VP-21b).
|
|
70
|
-
// Must run AFTER PoseSyncOut (so positions are up to date) and BEFORE ImpulseZero.
|
|
71
|
-
installEvents(world, engine, phases.postStep);
|
|
72
|
-
// physics-post: silently zero consumed Impulse/AngularImpulse (last in post).
|
|
73
|
-
installImpulseZero(world, engine, phases.postStep);
|
|
74
|
-
// physics-pre: debug validation — LAST in physics-pre, ONLY when debug: true.
|
|
75
|
-
// Runs after all lifecycle/sync/mass so the world is fully wired for the step.
|
|
76
|
-
if (opts.debug === true) {
|
|
77
|
-
installDebugValidation(world, engine, phases.preStep);
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
//# sourceMappingURL=index.js.map
|
package/systems/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/systems/index.ts"],"names":[],"mappings":"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"}
|
package/systems/kinematic.d.ts
DELETED
package/systems/kinematic.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"kinematic.js","sourceRoot":"","sources":["../../../../src/systems/kinematic.ts"],"names":[],"mappings":"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"}
|
package/systems/lifecycle.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
import { type Entity, type World } from "@vworlds/vecs";
|
|
2
|
-
import { type PhysicsEngine } from "../adapter/engine.js";
|
|
3
|
-
export declare function installBodyLifecycle(world: World, engine: PhysicsEngine, phase: Entity): void;
|
|
4
|
-
export declare function installPhysicsReaper(world: World, engine: PhysicsEngine, phase: Entity): void;
|
package/systems/lifecycle.js
DELETED
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
import { AngularVelocity, Body, BodyType, LinearVelocity, Position, Rotation, } from "../components/body.js";
|
|
2
|
-
import { Damping, GravityScale, MotionLocks, Sleep } from "../components/body_tuning.js";
|
|
3
|
-
import { PhysicsSystemTag } from "../adapter/engine.js";
|
|
4
|
-
import { withAllocated } from "../adapter/disposal.js";
|
|
5
|
-
export function installBodyLifecycle(world, engine, phase) {
|
|
6
|
-
const system = world.system("PhysicsBodyLifecycle").with(Body).phase(phase);
|
|
7
|
-
system.entity.add(PhysicsSystemTag);
|
|
8
|
-
system.enter([Body], (entity, [body]) => {
|
|
9
|
-
const bodyId = createWasmBodyId(engine, entity, body);
|
|
10
|
-
body._bodyId = bodyId;
|
|
11
|
-
engine.entityByBodyIndex.set(bodyId.index1, entity.eid);
|
|
12
|
-
});
|
|
13
|
-
// Inject `[Body]` so the handle survives the post-`_destroy` snapshot -- by
|
|
14
|
-
// the time the exit callback runs (next tick's inbox drain), `entity.get(Body)`
|
|
15
|
-
// would return `undefined`.
|
|
16
|
-
system.exit([Body], (entity, [body]) => {
|
|
17
|
-
const bodyId = body?._bodyId;
|
|
18
|
-
if (bodyId === undefined) {
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
// Defer the actual b2DestroyBody (and the reverse-map clear) until after
|
|
22
|
-
// shape + chain teardown -- see PhysicsBodyDestroyDeferred below and the
|
|
23
|
-
// pendingBodyDestroys note in PhysicsEngine. Destroying the body here would
|
|
24
|
-
// cascade-free its shapes' Box2D slots mid-pass, so a child shape created in
|
|
25
|
-
// the same flush could recycle a freed index1 before the dead shape's
|
|
26
|
-
// reverse-map entry is cleared, and the dead shape's exit would then wipe the
|
|
27
|
-
// live child's entry (dropping its sensor/contact events).
|
|
28
|
-
engine.pendingBodyDestroys.push(bodyId);
|
|
29
|
-
});
|
|
30
|
-
system.update(Body, (entity, body) => {
|
|
31
|
-
const bodyId = body._bodyId;
|
|
32
|
-
if (bodyId === undefined) {
|
|
33
|
-
return;
|
|
34
|
-
}
|
|
35
|
-
engine.box2d.b2Body_SetType(bodyId, bodyTypeToBox2D(engine.box2d, body.type));
|
|
36
|
-
if (body.enabled) {
|
|
37
|
-
engine.box2d.b2Body_Enable(bodyId);
|
|
38
|
-
}
|
|
39
|
-
else {
|
|
40
|
-
engine.box2d.b2Body_Disable(bodyId);
|
|
41
|
-
}
|
|
42
|
-
engine.box2d.b2Body_SetBullet(bodyId, body.bullet);
|
|
43
|
-
});
|
|
44
|
-
const dampingSystem = world
|
|
45
|
-
.system("PhysicsBodyLifecycle:Damping")
|
|
46
|
-
.with(Body, Damping)
|
|
47
|
-
.phase(phase)
|
|
48
|
-
.update({ watch: Damping, onEnter: true, inject: [Body] }, (entity, damping, [body]) => {
|
|
49
|
-
const bodyId = body?._bodyId;
|
|
50
|
-
if (bodyId === undefined) {
|
|
51
|
-
return;
|
|
52
|
-
}
|
|
53
|
-
engine.box2d.b2Body_SetLinearDamping(bodyId, damping.linear);
|
|
54
|
-
engine.box2d.b2Body_SetAngularDamping(bodyId, damping.angular);
|
|
55
|
-
});
|
|
56
|
-
dampingSystem.entity.add(PhysicsSystemTag);
|
|
57
|
-
const gravityScaleSystem = world
|
|
58
|
-
.system("PhysicsBodyLifecycle:GravityScale")
|
|
59
|
-
.with(Body, GravityScale)
|
|
60
|
-
.phase(phase)
|
|
61
|
-
.update({ watch: GravityScale, onEnter: true, inject: [Body] }, (entity, gravityScale, [body]) => {
|
|
62
|
-
const bodyId = body?._bodyId;
|
|
63
|
-
if (bodyId === undefined) {
|
|
64
|
-
return;
|
|
65
|
-
}
|
|
66
|
-
engine.box2d.b2Body_SetGravityScale(bodyId, gravityScale.value);
|
|
67
|
-
});
|
|
68
|
-
gravityScaleSystem.entity.add(PhysicsSystemTag);
|
|
69
|
-
const motionLocksSystem = world
|
|
70
|
-
.system("PhysicsBodyLifecycle:MotionLocks")
|
|
71
|
-
.with(Body, MotionLocks)
|
|
72
|
-
.phase(phase)
|
|
73
|
-
.update({ watch: MotionLocks, onEnter: true, inject: [Body] }, (entity, locks, [body]) => {
|
|
74
|
-
const bodyId = body?._bodyId;
|
|
75
|
-
if (bodyId === undefined) {
|
|
76
|
-
return;
|
|
77
|
-
}
|
|
78
|
-
withAllocated(() => new engine.box2d.b2MotionLocks(), (motionLocks) => {
|
|
79
|
-
motionLocks.linearX = locks.x;
|
|
80
|
-
motionLocks.linearY = locks.y;
|
|
81
|
-
motionLocks.angularZ = locks.rotation;
|
|
82
|
-
engine.box2d.b2Body_SetMotionLocks(bodyId, motionLocks);
|
|
83
|
-
});
|
|
84
|
-
});
|
|
85
|
-
motionLocksSystem.entity.add(PhysicsSystemTag);
|
|
86
|
-
const sleepSystem = world
|
|
87
|
-
.system("PhysicsBodyLifecycle:Sleep")
|
|
88
|
-
.with(Body, Sleep)
|
|
89
|
-
.phase(phase)
|
|
90
|
-
.update({ watch: Sleep, onEnter: true, inject: [Body] }, (entity, sleep, [body]) => {
|
|
91
|
-
const bodyId = body?._bodyId;
|
|
92
|
-
if (bodyId === undefined) {
|
|
93
|
-
return;
|
|
94
|
-
}
|
|
95
|
-
engine.box2d.b2Body_EnableSleep(bodyId, sleep.enabled);
|
|
96
|
-
engine.box2d.b2Body_SetAwake(bodyId, sleep.awake);
|
|
97
|
-
engine.box2d.b2Body_SetSleepThreshold(bodyId, sleep.threshold);
|
|
98
|
-
});
|
|
99
|
-
sleepSystem.entity.add(PhysicsSystemTag);
|
|
100
|
-
}
|
|
101
|
-
// Single point of Box2D teardown. Every lifecycle exit enqueues its handle
|
|
102
|
-
// (pendingShapeDestroys / pendingChainDestroys / pendingBodyDestroys) and does
|
|
103
|
-
// only vecs-side bookkeeping; this reaper performs all the b2Destroy* calls at
|
|
104
|
-
// once. Must be registered AFTER every system that touches a being-destroyed
|
|
105
|
-
// shape/body on a still-live handle (shape/chain lifecycle, material+filter sync,
|
|
106
|
-
// event opt-in sync) and BEFORE PhysicsMassRecompute and the step. Order within:
|
|
107
|
-
// shapes and chains first, then bodies -- children before parents, so a body's
|
|
108
|
-
// cascade never double-frees an already-reaped shape. Because nothing is
|
|
109
|
-
// destroyed until here, no slot is freed-then-recycled mid-pass, which is why the
|
|
110
|
-
// lifecycle exits and event opt-in carry no stale-id/cascade guards.
|
|
111
|
-
export function installPhysicsReaper(world, engine, phase) {
|
|
112
|
-
const system = world
|
|
113
|
-
.system("PhysicsReaper")
|
|
114
|
-
.phase(phase)
|
|
115
|
-
.run(() => {
|
|
116
|
-
const shapes = engine.pendingShapeDestroys;
|
|
117
|
-
for (const shapeId of shapes) {
|
|
118
|
-
engine.entityByShapeIndex.delete(shapeId.index1);
|
|
119
|
-
engine.box2d.b2DestroyShape(shapeId, true);
|
|
120
|
-
}
|
|
121
|
-
shapes.length = 0;
|
|
122
|
-
const chains = engine.pendingChainDestroys;
|
|
123
|
-
for (const chainId of chains) {
|
|
124
|
-
engine.box2d.b2DestroyChain(chainId);
|
|
125
|
-
}
|
|
126
|
-
chains.length = 0;
|
|
127
|
-
const bodies = engine.pendingBodyDestroys;
|
|
128
|
-
for (const bodyId of bodies) {
|
|
129
|
-
engine.entityByBodyIndex.delete(bodyId.index1);
|
|
130
|
-
engine.box2d.b2DestroyBody(bodyId);
|
|
131
|
-
}
|
|
132
|
-
bodies.length = 0;
|
|
133
|
-
});
|
|
134
|
-
system.entity.add(PhysicsSystemTag);
|
|
135
|
-
}
|
|
136
|
-
function createWasmBodyId(engine, entity, body) {
|
|
137
|
-
const box2d = engine.box2d;
|
|
138
|
-
return withAllocated(box2d.b2DefaultBodyDef, (def) => {
|
|
139
|
-
const position = entity.get(Position);
|
|
140
|
-
const rotation = entity.get(Rotation);
|
|
141
|
-
const linearVelocity = entity.get(LinearVelocity);
|
|
142
|
-
const angularVelocity = entity.get(AngularVelocity);
|
|
143
|
-
const damping = entity.get(Damping);
|
|
144
|
-
const gravityScale = entity.get(GravityScale);
|
|
145
|
-
const motionLocks = entity.get(MotionLocks);
|
|
146
|
-
const sleep = entity.get(Sleep);
|
|
147
|
-
def.type = bodyTypeToBox2D(box2d, body.type);
|
|
148
|
-
def.position.Set(position?.x ?? 0, position?.y ?? 0);
|
|
149
|
-
def.rotation.SetAngle(rotation?.angle ?? 0);
|
|
150
|
-
def.linearVelocity.Set(linearVelocity?.x ?? 0, linearVelocity?.y ?? 0);
|
|
151
|
-
def.angularVelocity = angularVelocity?.value ?? 0;
|
|
152
|
-
def.linearDamping = damping?.linear ?? 0;
|
|
153
|
-
def.angularDamping = damping?.angular ?? 0;
|
|
154
|
-
def.gravityScale = gravityScale?.value ?? 1;
|
|
155
|
-
def.motionLocks.linearX = motionLocks?.x ?? false;
|
|
156
|
-
def.motionLocks.linearY = motionLocks?.y ?? false;
|
|
157
|
-
def.motionLocks.angularZ = motionLocks?.rotation ?? false;
|
|
158
|
-
def.enableSleep = sleep?.enabled ?? true;
|
|
159
|
-
def.isAwake = sleep?.awake ?? true;
|
|
160
|
-
def.sleepThreshold = sleep?.threshold ?? 0.05;
|
|
161
|
-
def.isEnabled = body.enabled;
|
|
162
|
-
def.isBullet = body.bullet;
|
|
163
|
-
def.allowFastRotation = body.allowFastRotation;
|
|
164
|
-
return box2d.b2CreateBody(engine.worldId, def);
|
|
165
|
-
});
|
|
166
|
-
}
|
|
167
|
-
function bodyTypeToBox2D(box2d, type) {
|
|
168
|
-
switch (type) {
|
|
169
|
-
case BodyType.Static:
|
|
170
|
-
return box2d.b2BodyType.b2_staticBody;
|
|
171
|
-
case BodyType.Kinematic:
|
|
172
|
-
return box2d.b2BodyType.b2_kinematicBody;
|
|
173
|
-
case BodyType.Dynamic:
|
|
174
|
-
return box2d.b2BodyType.b2_dynamicBody;
|
|
175
|
-
}
|
|
176
|
-
}
|
|
177
|
-
//# sourceMappingURL=lifecycle.js.map
|
package/systems/lifecycle.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../../../src/systems/lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import { Body, BodyType } from "../components/body.js";
|
|
2
|
-
import { PhysicsSystemTag } from "../adapter/engine.js";
|
|
3
|
-
const CODE_DYNAMIC_BODY_WITHOUT_DENSITY = "dynamic-body-without-density";
|
|
4
|
-
export function installMassRecompute(world, engine, phase) {
|
|
5
|
-
const system = world
|
|
6
|
-
.system("PhysicsMassRecompute")
|
|
7
|
-
.phase(phase)
|
|
8
|
-
.run(() => {
|
|
9
|
-
for (const eid of engine.dirtyMassBodies) {
|
|
10
|
-
const bodyId = world.getEntity(eid)?.get(Body)?._bodyId;
|
|
11
|
-
if (bodyId !== undefined) {
|
|
12
|
-
engine.box2d.b2Body_ApplyMassFromShapes(bodyId);
|
|
13
|
-
}
|
|
14
|
-
}
|
|
15
|
-
engine.dirtyMassBodies.clear();
|
|
16
|
-
if (engine.debug) {
|
|
17
|
-
warnOnMasslessDynamicBodies(world, engine);
|
|
18
|
-
}
|
|
19
|
-
});
|
|
20
|
-
system.entity.add(PhysicsSystemTag);
|
|
21
|
-
}
|
|
22
|
-
function warnOnMasslessDynamicBodies(world, engine) {
|
|
23
|
-
world.filter(Body).forEach([Body], (entity, [body]) => {
|
|
24
|
-
const eid = entity.eid;
|
|
25
|
-
const bodyId = body._bodyId;
|
|
26
|
-
if (body.type !== BodyType.Dynamic || bodyId === undefined) {
|
|
27
|
-
engine.warn.rearm(eid, CODE_DYNAMIC_BODY_WITHOUT_DENSITY);
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
if (engine.box2d.b2Body_GetMass(bodyId) === 0) {
|
|
31
|
-
engine.warn.warnOnce(eid, CODE_DYNAMIC_BODY_WITHOUT_DENSITY, `Entity${eid} is a dynamic body with zero mass after recompute; it will not fall.`);
|
|
32
|
-
}
|
|
33
|
-
else {
|
|
34
|
-
engine.warn.rearm(eid, CODE_DYNAMIC_BODY_WITHOUT_DENSITY);
|
|
35
|
-
}
|
|
36
|
-
});
|
|
37
|
-
}
|
|
38
|
-
//# sourceMappingURL=mass_recompute.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mass_recompute.js","sourceRoot":"","sources":["../../../../src/systems/mass_recompute.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAsB,MAAM,sBAAsB,CAAC;AAE5E,MAAM,iCAAiC,GAAG,8BAA8B,CAAC;AAEzE,MAAM,UAAU,oBAAoB,CAAC,KAAY,EAAE,MAAqB,EAAE,KAAa;IACrF,MAAM,MAAM,GAAG,KAAK;SACjB,MAAM,CAAC,sBAAsB,CAAC;SAC9B,KAAK,CAAC,KAAK,CAAC;SACZ,GAAG,CAAC,GAAG,EAAE;QACR,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YACzC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,OAAO,CAAC;YACxD,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;gBACzB,MAAM,CAAC,KAAK,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC;YAClD,CAAC;QACH,CAAC;QACD,MAAM,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE/B,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YACjB,2BAA2B,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC7C,CAAC;IACH,CAAC,CAAC,CAAC;IACL,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,2BAA2B,CAAC,KAAY,EAAE,MAAqB;IACtE,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE;QACpD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACvB,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,OAAO,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YAC3D,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;YAC1D,OAAO;QACT,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,CAAC,IAAI,CAAC,QAAQ,CAClB,GAAG,EACH,iCAAiC,EACjC,SAAS,GAAG,sEAAsE,CACnF,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,iCAAiC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC"}
|