Physics stage 1a runs on Rapier: a new Rigidbody child object (body type, mass, gravity scale, damping, fixed rotation, CCD) makes its parent fall, bounce and come to rest in play, colliders gain friction, bounciness and density, the scene gains gravity (0, 980), the new PhysicsSystem steps at a fixed 60 Hz with interpolation in world coordinates and treats a tilemap as static ground, On collision enter gains normal and impulse, play waits for Rapier and does not start without it, and the editor run keeps the old CollisionSystem; the existing collision tests run against both systems unchanged (#146)
game-maker / gate (push) Successful in 1m46s
game-maker / suite (push) Successful in 6m17s

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
adminandClaude Opus 5 committed 2026-09-18 18:11:43 +02:00
1 parent d02bcca266
commit 78899b1ace
34 files changed
+2291 -676

No files matched your search

+9
View File
@@ -51,6 +51,14 @@ export interface ColliderAsset extends AssetBase {
type: 'collider';
}
/**
* Placed as a child of the object it moves – at most one per object. Its props say how the physics
* engine treats that object: falling, resting or pushed along by the graph (see `properties/rigidbody.ts`).
*/
export interface RigidbodyAsset extends AssetBase {
type: 'rigidbody';
}
/**
* `objects` is a template, not content: a placed container shows it without copying it, so an
* edit here reaches every instance (see `model/instance.ts`). Positions are local to the
@@ -236,6 +244,7 @@ export type Asset =
| BehaviorAsset
| VariablesAsset
| ColliderAsset
| RigidbodyAsset
| ContainerAsset
| TextureAsset
| AnimationAsset
+9 -1
View File
@@ -6,6 +6,7 @@ export const ASSET_TYPES = [
'behavior',
'variables',
'collider',
'rigidbody',
'container',
'texture',
'animation',
@@ -28,6 +29,7 @@ export const ASSET_TYPE_LABELS: Record<AssetType, string> = {
behavior: 'Behavior',
variables: 'Variables',
collider: 'Collider',
rigidbody: 'Rigidbody',
container: 'Container',
texture: 'Texture',
animation: 'Animation',
@@ -75,7 +77,13 @@ export function isAssetType(value: unknown): value is AssetType {
/** Types drawn as an icon in the overlay layer instead of as scene content. */
export function isSymbolType(type: AssetType): boolean {
return type === 'camera' || type === 'behavior' || type === 'collider' || type === 'container';
return (
type === 'camera' ||
type === 'behavior' ||
type === 'collider' ||
type === 'rigidbody' ||
type === 'container'
);
}
/**