Skip to main content

defineBehavior

@zylem/game-lib


@zylem/game-lib / behavior / defineBehavior

Function: defineBehavior()

defineBehavior<O, H, I>(config): BehaviorDescriptor<O, H, I>

Defined in: node_modules/.pnpm/@zylem+behaviors@0.8.9_@types+react@19.3.0_react@19.3.0_three@0.185.1/node_modules/@zylem/behaviors/dist/behavior-system-DkFAwLb_.d.ts:105

Define a typed behavior descriptor.

Type Parameters​

O​

O extends Record<string, any>

H​

H extends Record<string, any> = Record<string, never>

I​

I = unknown

Parameters​

config​

DefineBehaviorConfig<O, H, I>

Returns​

BehaviorDescriptor<O, H, I>

Example​

export const WorldBoundary2DBehavior = defineBehavior({
name: 'world-boundary-2d',
defaultOptions: { boundaries: { top: 0, bottom: 0, left: 0, right: 0 } },
systemFactory: (ctx) => new WorldBoundary2DSystem(ctx.world),
createHandle: (ref) => ({
getLastHits: () => ref.fsm?.getLastHits() ?? null,
getMovement: (moveX: number, moveY: number) =>
ref.fsm?.getMovement(moveX, moveY) ?? { moveX, moveY },
}),
});

// Usage - handle has getLastHits and getMovement with full types
const boundary = ship.use(WorldBoundary2DBehavior, { ... });
const hits = boundary.getLastHits(); // Fully typed!