# Class: GameWorkerManager (/pixi-vn/index/classes/GameWorkerManager)



Defined in: [src/worker/GameWorkerManager.ts:26](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L26)

Optional integration point for offloading Pixi'VN's own heavy, pure (no DOM/PixiJS/audio)
computations to a Worker the game project registers. Pixi'VN never creates a Worker itself
and works exactly as before if none is registered - this is opt-in, not a requirement, so
projects that can't or don't want to use Workers (SSR, certain embeds, ...) are unaffected.

The game project owns the `Worker` instance (so it controls the bundler-specific `new
Worker(new URL(...), { type: "module" })` call, any CSP/nonce concerns, and whether it exists
at all) and just needs its `onmessage` wired to [handleGameWorkerMessage](/pixi-vn/index/functions/handleGameWorkerMessage) - see that
function's doc comment for the worker-side half of this.

## Constructors [#constructors]

### Constructor [#constructor]

\> **new GameWorkerManager**(): `GameWorkerManager`

#### Returns [#returns]

`GameWorkerManager`

## Accessors [#accessors]

### isAvailable [#isavailable]

#### Get Signature [#get-signature]

\> **get** `static` **isAvailable**(): `boolean`

Defined in: [src/worker/GameWorkerManager.ts:31](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L31)

##### Returns [#returns-1]

`boolean`

## Methods [#methods]

### clone() [#clone]

\> `static` **clone**\<`T`>(`value`): `Promise`\<`T`>

Defined in: [src/worker/GameWorkerManager.ts:108](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L108)

Deep-clones `value` (JSON round-trip, matching `createExportableElement`) on the registered worker.

#### Type Parameters [#type-parameters]

##### T [#t]

`T` *extends* `object`

#### Parameters [#parameters]

##### value [#value]

`T`

#### Returns [#returns-2]

`Promise`\<`T`>

***

### custom() [#custom]

\> `static` **custom**\<`TResult`>(`kind`, `payload`): `Promise`\<`TResult`>

Defined in: [src/worker/GameWorkerManager.ts:118](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L118)

Runs the handler a third-party library registered for `kind` (see
`registerGameWorkerHandler`) on the registered worker, passing it `payload`. Lets a
library built on top of Pixi'VN share this same worker instead of needing one of its own -
see that function's doc comment for the worker-side half of this.

#### Type Parameters [#type-parameters-1]

##### TResult [#tresult]

`TResult` = `unknown`

#### Parameters [#parameters-1]

##### kind [#kind]

`string`

##### payload [#payload]

`unknown`

#### Returns [#returns-3]

`Promise`\<`TResult`>

***

### diff() [#diff]

\> `static` **diff**(`before`, `after`): `Promise`\<`Difference`\[]>

Defined in: [src/worker/GameWorkerManager.ts:103](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L103)

Computes the `microdiff` difference between `before` and `after` on the registered worker.

#### Parameters [#parameters-2]

##### before [#before]

`object`

##### after [#after]

`object`

#### Returns [#returns-4]

`Promise`\<`Difference`\[]>

***

### register() [#register]

\> `static` **register**(`worker`): `void`

Defined in: [src/worker/GameWorkerManager.ts:40](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L40)

Registers the Worker Pixi'VN may use for eligible heavy computations. Replaces any
previously registered worker (its still-pending requests are rejected, never left
hanging).

#### Parameters [#parameters-3]

##### worker [#worker]

`Worker`

#### Returns [#returns-5]

`void`

***

### restoreDiff() [#restorediff]

\> `static` **restoreDiff**\<`T`>(`state`, `diff`): `Promise`\<`T`>

Defined in: [src/worker/GameWorkerManager.ts:98](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L98)

Applies `diff` to `state` on the registered worker (see `restoreDiffChanges`).

#### Type Parameters [#type-parameters-2]

##### T [#t-1]

`T` *extends* `object`

#### Parameters [#parameters-4]

##### state [#state]

`T`

##### diff [#diff-1]

`Difference`\[]

#### Returns [#returns-6]

`Promise`\<`T`>

***

### unregister() [#unregister]

\> `static` **unregister**(): `void`

Defined in: [src/worker/GameWorkerManager.ts:47](https://github.com/DRincs-Productions/pixi-vn/blob/5bb5bb1f92e38998ea2f477b600168d8da3ece19/src/worker/GameWorkerManager.ts#L47)

Stops using the registered worker (does not terminate it - the caller owns its lifecycle).

#### Returns [#returns-7]

`void`
