# `@combos-fun/plugin-renderer-mask` — Agent notes

Read only to clip a GameObject container with local vector geometry or texture alpha.

```ts
import { Mask, MaskSystem, MASK_TYPE, type MaskParams } from '@combos-fun/plugin-renderer-mask';
```

`Mask.componentName = 'Mask'`; `MaskSystem.systemName = 'Mask'`.

`MASK_TYPE` is `Circle | Ellipse | Rect | RoundedRect | Polygon | Img | Sprite`.

```ts
interface MaskParams {
  type: MASK_TYPE;
  style?: { x?: number; y?: number; radius?: number; width?: number; height?: number; paths?: number[] };
  resource?: string;
  spriteName?: string;
}
```

Pass a concrete `style`: Circle uses `x/y/radius`; Ellipse and Rect use `x/y/width/height`; RoundedRect also uses `radius`; Polygon uses flat local-space `paths`. Missing dimensions default to zero and can hide everything. Explicit `style: undefined` throws `no have Mask style`.

```ts
go.addComponent(new Mask({
  type: MASK_TYPE.Circle,
  style: { x: 0, y: 0, radius: 50 },
}));
```

`Img` masks require an IMAGE `resource` and read `data.image` directly—no `plugin-renderer-img` import is needed. `Sprite` masks require a SPRITE `resource`, exact `spriteName`, and `plugin-renderer-sprite` imported so its atlas instance factory runs. Texture masks use source alpha and `style` supplies their local position and size.
