# ModelHandler

Class · extends [`ResourceHandler`](https://api.playcanvas.com/engine/classes/ResourceHandler.md) · category: Asset

Source: https://github.com/playcanvas/engine/blob/970d89f6d3bc6667f4e1f88153abd6e7e82ed52c/src/framework/handlers/model.js#L18

Resource handler for the `model` asset type. Loads legacy PlayCanvas JSON models and GLB files
into a [Model](https://api.playcanvas.com/engine/classes/Model.md). OBJ files are supported once the `ObjModelParser` shipped in
`playcanvas/scripts/esm/parsers/obj-model.mjs` is registered with
[ResourceHandler#addParser](https://api.playcanvas.com/engine/classes/ResourceHandler.md#addparser).

## Methods

### patch

```ts
patch(asset: any, assets: any): void
```

The patch function performs any operations on a resource that requires a dependency on its
asset data or any other asset data. The base implementation does nothing.

**Parameters**

- `asset` (`any`): The asset to patch.
- `assets` (`any`): The asset registry.

## Inherited from [ResourceHandler](https://api.playcanvas.com/engine/classes/ResourceHandler.md)

- `protected _app: AppBase`
- `handlerType: string = ''`
- `get app(): AppBase`
- `get maxRetries(): number` · `set maxRetries(value: number)`
- `get parsers(): ResourceParser[]`
- `addParser(parser: ResourceParser, decider?: any): void`
- `fetch(url: string | { load: string; original: string }, responseType: string, callback: ResourceHandlerCallback, asset?: Asset<string>): void`
- `load(url: string | { load: string; original: string }, callback: ResourceHandlerCallback, asset?: Asset<string>): void`
- `open(url: string, data: any, asset?: Asset<string>): any`
- `removeParser(parser: ResourceParser): void`
