@ignifx/physics-2d 0.9.0 → 0.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.ts +121 -19
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +343 -33
- package/dist/index.js.map +1 -1
- package/package.json +5 -5
- package/skills/physics-2d/SKILL.md +39 -16
package/dist/index.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { AssetHandle, AssetLoader, Component, ComponentHooks, DiagnosticsGroup, Disconnect, Entity, ErrorContext, Extension, ExtensionContext, IgnifxError, JsonValue, LayerMask, MutableVec2, Schema, SchemaDescription, Signal, Vec2, Vec2Like } from "@ignifx/core";
|
|
1
|
+
import { AssetHandle, AssetLoader, Component, ComponentHooks, DiagnosticsGroup, Disconnect, Entity, ErrorContext, Extension, ExtensionContext, IgnifxError, JsonValue, LayerMask, MutableVec2, Schema, SchemaDescription, Signal, Vec2, Vec2Like, Vec3 } from "@ignifx/core";
|
|
2
2
|
import { Collider, EventQueue, RigidBody, World } from "@dimforge/rapier2d-compat";
|
|
3
3
|
import { TilemapCollisionData } from "@ignifx/2d";
|
|
4
4
|
//#region src/settings.d.ts
|
|
@@ -315,6 +315,13 @@ export declare abstract class Collider2D extends Component implements ComponentH
|
|
|
315
315
|
onAttach(): void;
|
|
316
316
|
/** Marks the entity's body for a rebuild, which removes this collider from it. */
|
|
317
317
|
onDetach(): void;
|
|
318
|
+
/**
|
|
319
|
+
* Rebuilds the body after a tool changed fields from outside: an editor's inspector, or a hot
|
|
320
|
+
* reload's new default (`ComponentHooks.onValidate`).
|
|
321
|
+
*
|
|
322
|
+
* @param fields - The fields that changed.
|
|
323
|
+
*/
|
|
324
|
+
onValidate(fields: readonly string[]): void;
|
|
318
325
|
/**
|
|
319
326
|
* Rebuilds the entity's body and shapes at the start of the next fixed step. Call it after
|
|
320
327
|
* changing a size, an offset, `isTrigger`, or the entity's scale.
|
|
@@ -511,6 +518,13 @@ export declare class Rigidbody2D extends Component implements ComponentHooks {
|
|
|
511
518
|
onAttach(): void;
|
|
512
519
|
/** Marks the entity's body for a rebuild, which turns it back into an implicit static body. */
|
|
513
520
|
onDetach(): void;
|
|
521
|
+
/**
|
|
522
|
+
* Rebuilds the body after a tool changed fields from outside: an editor's inspector, or a hot
|
|
523
|
+
* reload's new default (`ComponentHooks.onValidate`).
|
|
524
|
+
*
|
|
525
|
+
* @param fields - The fields that changed.
|
|
526
|
+
*/
|
|
527
|
+
onValidate(fields: readonly string[]): void;
|
|
514
528
|
/**
|
|
515
529
|
* Rebuilds the body at the start of the next fixed step. Call it after changing `bodyType`,
|
|
516
530
|
* `mass`, `freezeRotation`, damping, or the entity's scale.
|
|
@@ -655,6 +669,13 @@ export declare class CharacterController2D extends Component implements Componen
|
|
|
655
669
|
onAttach(): void;
|
|
656
670
|
/** Releases the Rapier controller and its collider. */
|
|
657
671
|
onDetach(): void;
|
|
672
|
+
/**
|
|
673
|
+
* Rebuilds the body after a tool changed fields from outside: an editor's inspector, or a hot
|
|
674
|
+
* reload's new default (`ComponentHooks.onValidate`).
|
|
675
|
+
*
|
|
676
|
+
* @param fields - The fields that changed.
|
|
677
|
+
*/
|
|
678
|
+
onValidate(fields: readonly string[]): void;
|
|
658
679
|
/** Rebuilds the capsule or box at the start of the next fixed step. */
|
|
659
680
|
rebuild(): void;
|
|
660
681
|
/**
|
|
@@ -878,19 +899,21 @@ export declare class EdgeCollider2D extends Collider2D {
|
|
|
878
899
|
}
|
|
879
900
|
//#endregion
|
|
880
901
|
//#region src/components/tilemap-collider.d.ts
|
|
881
|
-
/**
|
|
882
|
-
* Read tile collision data through the optional 2D toolkit's type and rebuild when its version changes.
|
|
883
|
-
* Closed polylines preserve concave tile outlines that convex hulls would fill in. They are thin
|
|
884
|
-
* surfaces, so a body starting inside the map is not pushed out.
|
|
885
|
-
*/
|
|
886
902
|
/**
|
|
887
903
|
* The collision surface of a tilemap, as one static body's worth of Rapier shapes.
|
|
888
904
|
*
|
|
905
|
+
* @remarks
|
|
906
|
+
* The collider reads the `Tilemap` on its own entity, so a scene file that holds both components
|
|
907
|
+
* has tile collision as soon as it loads. It follows that tilemap: a tile edit, a new map, or a
|
|
908
|
+
* tilemap added later all reach physics at the next fixed step. Assign
|
|
909
|
+
* {@link TilemapCollider2D.collisionData} only to use other geometry, such as data you built in
|
|
910
|
+
* code or a tilemap on another entity.
|
|
911
|
+
*
|
|
889
912
|
* @example
|
|
890
913
|
* ```ts
|
|
891
|
-
* const
|
|
892
|
-
*
|
|
893
|
-
*
|
|
914
|
+
* const level = world.createEntity("Level");
|
|
915
|
+
* level.addComponent(Tilemap).map = app.assets.load<TilemapAsset>("level.tilemap.json");
|
|
916
|
+
* level.addComponent(TilemapCollider2D); // reads the Tilemap beside it
|
|
894
917
|
* ```
|
|
895
918
|
*
|
|
896
919
|
* @public
|
|
@@ -904,21 +927,33 @@ export declare class TilemapCollider2D extends Collider2D {
|
|
|
904
927
|
/** Applies the shared defaults. */
|
|
905
928
|
constructor();
|
|
906
929
|
/**
|
|
907
|
-
* The merged chunk geometry this collider builds shapes from
|
|
930
|
+
* The merged chunk geometry this collider builds shapes from: the assigned data, or else the
|
|
931
|
+
* `Tilemap` on the same entity.
|
|
932
|
+
*
|
|
933
|
+
* @remarks
|
|
934
|
+
* Reading it works in any app, before any body is built. An edit-mode app also builds the body
|
|
935
|
+
* without stepping (ADR-0028, amendment of 2026-10-20), so `app.physics2d.colliderOutlines` draws
|
|
936
|
+
* the same outlines from Rapier.
|
|
908
937
|
*
|
|
909
|
-
* @returns The data, or `null` when
|
|
938
|
+
* @returns The data, or `null` when nothing was assigned and the entity has no `Tilemap`.
|
|
910
939
|
*/
|
|
911
940
|
get collisionData(): TilemapCollisionData | null;
|
|
912
941
|
/**
|
|
913
|
-
*
|
|
942
|
+
* Uses other geometry instead of the sibling tilemap's, and schedules a rebuild.
|
|
914
943
|
*
|
|
915
|
-
* @param value - The merged chunk geometry, or `null` to
|
|
944
|
+
* @param value - The merged chunk geometry, or `null` to go back to the `Tilemap` on the same
|
|
945
|
+
* entity (no shapes when there is none).
|
|
916
946
|
*/
|
|
917
947
|
set collisionData(value: TilemapCollisionData | null);
|
|
918
948
|
/**
|
|
919
949
|
* Whether the supplied data has changed since the shapes were built. The runtime polls this once
|
|
920
950
|
* per fixed step, which is how a tile edit reaches physics without a cross-package subscription.
|
|
921
951
|
*
|
|
952
|
+
* @remarks
|
|
953
|
+
* A disabled collider, or one on an inactive entity, builds no shapes, so it answers `false`
|
|
954
|
+
* rather than asking for the same empty rebuild every step. Enabling it again finds the data
|
|
955
|
+
* changed and rebuilds.
|
|
956
|
+
*
|
|
922
957
|
* @returns `true` when a rebuild is due.
|
|
923
958
|
*
|
|
924
959
|
* @internal
|
|
@@ -1134,6 +1169,13 @@ interface BodyRecord2D {
|
|
|
1134
1169
|
staticVersion: number;
|
|
1135
1170
|
/** Whether the `IGX-1151` diagnostic has already been reported for this body. */
|
|
1136
1171
|
reportedMove: boolean;
|
|
1172
|
+
/**
|
|
1173
|
+
* `Transform.worldMatrixVersion` when the body was last placed. An edit-mode app compares it each
|
|
1174
|
+
* frame to follow a transform the editor moved (ADR-0028, amendment of 2026-10-20).
|
|
1175
|
+
*/
|
|
1176
|
+
placedVersion: number;
|
|
1177
|
+
/** The lossy scale the colliders were built at; a different scale needs new colliders. */
|
|
1178
|
+
readonly placedScale: Vec3;
|
|
1137
1179
|
/** Signal connections the record owns, dropped when it is torn down. */
|
|
1138
1180
|
disconnects: Disconnect[];
|
|
1139
1181
|
}
|
|
@@ -1206,6 +1248,13 @@ declare class Physics2DRuntime {
|
|
|
1206
1248
|
* @returns `true` once a step has completed.
|
|
1207
1249
|
*/
|
|
1208
1250
|
get hasStepped(): boolean;
|
|
1251
|
+
/**
|
|
1252
|
+
* Whether this runtime belongs to an edit-mode app, where bodies are kept in sync with the world
|
|
1253
|
+
* by {@link Physics2DRuntime.syncEditMode} and never stepped (ADR-0028, amendment of 2026-10-20).
|
|
1254
|
+
*
|
|
1255
|
+
* @returns `true` in an editor's scene view.
|
|
1256
|
+
*/
|
|
1257
|
+
get isEditMode(): boolean;
|
|
1209
1258
|
/**
|
|
1210
1259
|
* Every body, in creation order.
|
|
1211
1260
|
*
|
|
@@ -1349,6 +1398,19 @@ declare class Physics2DRuntime {
|
|
|
1349
1398
|
* @param fixedDeltaSeconds - The fixed step in seconds.
|
|
1350
1399
|
*/
|
|
1351
1400
|
step(fixedDeltaSeconds: number): void;
|
|
1401
|
+
/**
|
|
1402
|
+
* Brings the bodies in line with the world without stepping, which is all an edit-mode app ever
|
|
1403
|
+
* does with them (ADR-0028, amendment of 2026-10-20): it builds, rebuilds, and removes bodies for
|
|
1404
|
+
* component, layer, and tile changes, and places every body whose transform moved where the
|
|
1405
|
+
* transform now is, so a query sees what the editor shows. The world is never stepped, so nothing
|
|
1406
|
+
* falls, no contact or trigger callback fires, and no pose is written back to a transform.
|
|
1407
|
+
*
|
|
1408
|
+
* @remarks
|
|
1409
|
+
* Rapier refreshes its broadphase only inside a step, so after a change this runs the same
|
|
1410
|
+
* zero-length step a game runs before its first real one (S6.2). With a zero timestep nothing
|
|
1411
|
+
* moves; the events it reports are dropped. A changed scale rebuilds the body's colliders.
|
|
1412
|
+
*/
|
|
1413
|
+
syncEditMode(): void;
|
|
1352
1414
|
/**
|
|
1353
1415
|
* Writes the interpolated display pose of every interpolated body.
|
|
1354
1416
|
*
|
|
@@ -1388,6 +1450,23 @@ interface Physics2DRapierHandles {
|
|
|
1388
1450
|
/** Rapier's `World`. */
|
|
1389
1451
|
readonly world: RapierWorld;
|
|
1390
1452
|
}
|
|
1453
|
+
/**
|
|
1454
|
+
* One 2D collider's outline, from `app.physics2d.colliderOutlines`: what an editor draws as a
|
|
1455
|
+
* collider gizmo (ADR-0028, amendment of 2026-10-20).
|
|
1456
|
+
*
|
|
1457
|
+
* @public
|
|
1458
|
+
*/
|
|
1459
|
+
interface ColliderOutline2D {
|
|
1460
|
+
/** The collider the outline is of. */
|
|
1461
|
+
readonly collider: Collider2D;
|
|
1462
|
+
/** Whether the collider is a trigger, which an editor usually draws in another colour. */
|
|
1463
|
+
readonly isTrigger: boolean;
|
|
1464
|
+
/**
|
|
1465
|
+
* The outline as world-space line segments in the XY plane: every four numbers are one segment,
|
|
1466
|
+
* the `x, y` of its two ends, in metres.
|
|
1467
|
+
*/
|
|
1468
|
+
readonly lines: Float32Array;
|
|
1469
|
+
}
|
|
1391
1470
|
/**
|
|
1392
1471
|
* The service behind `app.physics2d`.
|
|
1393
1472
|
*
|
|
@@ -1438,7 +1517,7 @@ export declare class Physics2DService {
|
|
|
1438
1517
|
* @param maxDistance - How far to travel; defaults to 10 km.
|
|
1439
1518
|
* @param options - Layer mask and trigger behaviour.
|
|
1440
1519
|
* @returns The hit, or `null` when the ray clears everything.
|
|
1441
|
-
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet.
|
|
1520
|
+
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet, outside edit mode.
|
|
1442
1521
|
*/
|
|
1443
1522
|
raycast(origin: Vec2Like, direction: Vec2Like, maxDistance?: number, options?: QueryOptions2D): RaycastHit2D | null;
|
|
1444
1523
|
/**
|
|
@@ -1449,7 +1528,7 @@ export declare class Physics2DService {
|
|
|
1449
1528
|
* @param maxDistance - How far to travel; defaults to 10 km.
|
|
1450
1529
|
* @param options - Layer mask and trigger behaviour.
|
|
1451
1530
|
* @returns The hits, in increasing distance. The array is reused between calls.
|
|
1452
|
-
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet.
|
|
1531
|
+
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet, outside edit mode.
|
|
1453
1532
|
*/
|
|
1454
1533
|
raycastAll(origin: Vec2Like, direction: Vec2Like, maxDistance?: number, options?: QueryOptions2D): readonly RaycastHit2D[];
|
|
1455
1534
|
/**
|
|
@@ -1459,7 +1538,7 @@ export declare class Physics2DService {
|
|
|
1459
1538
|
* @param radius - Its radius in metres.
|
|
1460
1539
|
* @param options - Layer mask and trigger behaviour.
|
|
1461
1540
|
* @returns The overlapping entities, in Rapier's order. The array is reused between calls.
|
|
1462
|
-
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet.
|
|
1541
|
+
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet, outside edit mode.
|
|
1463
1542
|
*/
|
|
1464
1543
|
overlapCircle(centre: Vec2Like, radius: number, options?: QueryOptions2D): readonly Entity[];
|
|
1465
1544
|
/**
|
|
@@ -1470,7 +1549,7 @@ export declare class Physics2DService {
|
|
|
1470
1549
|
* @param rotation - Its rotation in degrees counter-clockwise; defaults to `0`.
|
|
1471
1550
|
* @param options - Layer mask and trigger behaviour.
|
|
1472
1551
|
* @returns The overlapping entities. The array is reused between calls.
|
|
1473
|
-
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet.
|
|
1552
|
+
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet, outside edit mode.
|
|
1474
1553
|
*/
|
|
1475
1554
|
overlapBox(centre: Vec2Like, size: Vec2Like, rotation?: number, options?: QueryOptions2D): readonly Entity[];
|
|
1476
1555
|
/**
|
|
@@ -1482,9 +1561,32 @@ export declare class Physics2DService {
|
|
|
1482
1561
|
* @param maxDistance - How far to sweep.
|
|
1483
1562
|
* @param options - Layer mask and trigger behaviour.
|
|
1484
1563
|
* @returns The hit, or `null`.
|
|
1485
|
-
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet.
|
|
1564
|
+
* @throws IgnifxError with code `IGX-1153` when no fixed step has run yet, outside edit mode.
|
|
1486
1565
|
*/
|
|
1487
1566
|
shapeCast(centre: Vec2Like, radius: number, direction: Vec2Like, maxDistance: number, options?: QueryOptions2D): ShapeCastHit2D | null;
|
|
1567
|
+
/**
|
|
1568
|
+
* The outlines of an entity's 2D colliders, as world-space line segments: what an editor draws as
|
|
1569
|
+
* collider gizmos (ADR-0028, amendment of 2026-10-20).
|
|
1570
|
+
*
|
|
1571
|
+
* @remarks
|
|
1572
|
+
* The segments are Rapier's own debug drawing of the colliders the entity's body is built from,
|
|
1573
|
+
* so a polygon, an edge chain, a capsule, a one-way platform, and every piece of a
|
|
1574
|
+
* `TilemapCollider2D` are outlined exactly. A body exists from the first fixed step in a game,
|
|
1575
|
+
* and from the first frame or query in an edit-mode app, which keeps bodies on the transforms the
|
|
1576
|
+
* editor moves; an entity without one (no enabled collider yet, or before that point) has no
|
|
1577
|
+
* outline. A `CharacterController2D`'s own shape is not a collider and is not outlined.
|
|
1578
|
+
*
|
|
1579
|
+
* @param entity - The entity whose colliders to outline.
|
|
1580
|
+
* @returns One outline per collider that produced a shape, in component order; empty when none.
|
|
1581
|
+
*
|
|
1582
|
+
* @example
|
|
1583
|
+
* ```ts
|
|
1584
|
+
* for (const outline of app.physics2d.colliderOutlines(selected)) {
|
|
1585
|
+
* drawLines2D(outline.lines, outline.isTrigger ? "orange" : "green");
|
|
1586
|
+
* }
|
|
1587
|
+
* ```
|
|
1588
|
+
*/
|
|
1589
|
+
colliderOutlines(entity: Entity): readonly ColliderOutline2D[];
|
|
1488
1590
|
}
|
|
1489
1591
|
//#endregion
|
|
1490
1592
|
//#region src/extension.d.ts
|
|
@@ -1553,5 +1655,5 @@ export declare const physics2d: (options?: Physics2DOptions) => Extension;
|
|
|
1553
1655
|
*/
|
|
1554
1656
|
export declare function describeSchemas(): Readonly<Record<string, SchemaDescription>>;
|
|
1555
1657
|
//#endregion
|
|
1556
|
-
export type { BodyType2D, CapsuleDirection2D, CharacterCollision2D, CharacterShape2D, Collision2D, CollisionEventMode2D, CombineRule, ContactPoint2D, InterpolationMode2D, Physics2DErrorOptions, Physics2DMaterialValues, Physics2DOptions, Physics2DRapierHandles, Physics2DSettings, QueryOptions2D, RaycastHit2D, Rigidbody2DRapierHandles, ShapeCastHit2D, TriggerEvent2D };
|
|
1658
|
+
export type { BodyType2D, CapsuleDirection2D, CharacterCollision2D, CharacterShape2D, ColliderOutline2D, Collision2D, CollisionEventMode2D, CombineRule, ContactPoint2D, InterpolationMode2D, Physics2DErrorOptions, Physics2DMaterialValues, Physics2DOptions, Physics2DRapierHandles, Physics2DSettings, QueryOptions2D, RaycastHit2D, Rigidbody2DRapierHandles, ShapeCastHit2D, TriggerEvent2D };
|
|
1557
1659
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/settings.ts","../src/material.ts","../src/lite/rapier/world.ts","../src/components/collider.ts","../src/events.ts","../src/components/rigidbody.ts","../src/components/character-controller.ts","../src/components/colliders.ts","../src/components/tilemap-collider.ts","../src/errors.ts","../src/queries.ts","../src/runtime/body-record.ts","../src/runtime/runtime.ts","../src/runtime/host.ts","../src/service.ts","../src/extension.ts","../src/schemas.ts"],"mappings":";;;;;;;;;;;;;;;;;qBAiBa;;;;;;UAOI;;WAEN;;WAEA;;;;;;;;;;;;;;;;;;;UAoBM;;WAEN,SAAS;;;;;WAKT,iBAAiB,SAAS;;WAE1B,iBAAiB;;WAEjB;;WAEA;;;;;;;;;;;;;wBAuBK,2BAA2B;;;;;;;;wBAoB3B,4BAA4B;;;;;;;;;;;;;qBCzF/B;;;;;;qBAOA;;;;;;qBAOA;;;;;;qBAOA;;;;;;;;;;;;qBAaA,6BAA6B;;SAEjC;;WAGE;;WAGA;;WAGA;;;;;;;EAQT,YAAY,cAAc,QAAQ;;;;;;;;;;;;;SAkB3B,WAAW,cAAc,QAAQ,QAAQ,2BAA2B;;;;;;;;;wBAe7D,iCAAiC,YAAY;;;;;;;;;;;wBAqB7C,uBAAuB,iBAAiB,UAAU,YAAY;;;;;;;;;;;;;;KC3FlE,cAAc;;;;;;KAOd,aAAa;;;;;;KAOb,iBAAiB;;;;;;cAchB;;WAEX;;WAEA;;WAEA;;;;;;;KAQU,uBAAuB,2BAA2B;;;;;;KA+BlD;WACG;WAAsB;WAA4B;;WAClD;WAAyB;;WACzB;WAA0B;WAA6B;;WACvD;WAA0B,QAAQ;;WAClC;WAA2B,QAAQ;;;;;;;;;;;;;;;qBC1FrC;;;;;;KAOD,sBAAsB;;;;;;UAOjB;;WAEN,OAAO;;WAEP,QAAQ;;WAER;;WAEA;;;;;;;;;wBAUK,oBAAoB;;;;;;8BAuBd,mBAAmB,qBAAqB;;SAErD;;EAGP,QAAgB;;EAGhB;;EAGA,UAAkB,YAAY;;EAG9B,gBAAwB;;EAGxB,iBAAyB;;EAGzB,oBAA4B;;;;;;EAO5B;;EAGA;;EAGA;;EAMA;;EAKA;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/settings.ts","../src/material.ts","../src/lite/rapier/world.ts","../src/components/collider.ts","../src/events.ts","../src/components/rigidbody.ts","../src/components/character-controller.ts","../src/components/colliders.ts","../src/components/tilemap-collider.ts","../src/errors.ts","../src/queries.ts","../src/runtime/body-record.ts","../src/runtime/runtime.ts","../src/runtime/host.ts","../src/service.ts","../src/extension.ts","../src/schemas.ts"],"mappings":"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"}
|