[API](/solutions/geotoolkit/geotoolkit_js/apis/readme) / [geotoolkit3d](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d) / [scene](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3) / [panel](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#panel) / [AbstractPanel](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#abstractpanel) / AbstractPanel

# Class: AbstractPanel

[panel](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#panel).[AbstractPanel](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#abstractpanel).AbstractPanel

Abstract Panel is a 3D "quad" rectangle which can be used to draw and display 2D toolkit shapes.<br>
The rendering options of the shapes are fully customizable (background fillstyle, size, scale).

## Hierarchy

- [`Object3D`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d)
↳ **`AbstractPanel`**
↳↳ [`Plane`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.plane.plane.plane)
↳↳ [`FencePanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.seismic-1.fencepanel.fencepanel)
↳↳ [`Slice`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.seismic-1.slice.slice)


## Implements

- [`IOverlayableObject`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject)


## Table of contents

Constructors
- [new AbstractPanel(options)](/solutions/geotoolkit/GeoToolkit_JS/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel.md#new abstractpanel(options))


Methods
| [add](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#add) | [afterRender](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#afterrender) | [beforeRender](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#beforerender) |
|  --- | --- | --- |
| [dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#dispose) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getclassname) | [getCorner](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getcorner) |
| [getLocalCorner](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getlocalcorner) | [getMesh](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getmesh) | [getOptions](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getoptions) |
| [getOverlay](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getoverlay) | [getOverlayTextureBounds](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getoverlaytexturebounds) | [getVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getvisible) |
| [invalidateObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#invalidateobject) | [isDisposed](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#isdisposed) | [isSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#isselectable) |
| [notify](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#notify) | [off](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#off) | [on](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#on) |
| [onStatsUpdated](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#onstatsupdated) | [onVisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#onvisibilitychanged) | [remove](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#remove) |
| [setOptions](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setoptions) | [setOverlay](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setoverlay) | [setPosition](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setposition) |
| [setRotation](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setrotation) | [setSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setselectable) | [setVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#setvisible) |
| [updateObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#updateobject) | [useOwnHighlight](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#useownhighlight) | [getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#getclassname-1) |
| [register](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel#register) |


## Contents

Constructors
#### new AbstractPanel(options)

• `Protected` **new AbstractPanel**(`options?`)

#### Parameters

| Name  | Type  |
|  --- | --- |
| `Optional` `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#options) |


#### Overrides

Object3D.constructor

Methods
#### add

▸ **add**(`object`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Adds object as child of this object.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `object` | `Object3D`<`Object3DEventMap`&gt; | `Object3D`<`Object3DEventMap`&gt;[] | object |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[add](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#add)

#### afterRender

▸ **afterRender**(`scene`, `camera`, `plot`, `renderer`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

This function is called after rendering and can update this object's content.<br>
<br>
It should not trigger any invalidateObject though.<br>
Note that it is not necessary nor recommended to explicitly call afterRender on this object's children as beforeRender will be called on all nodes present in the scene.<br>
<br>
This will be executed after the transformations simplification.<br>
<br>

**`See`**

[Plot](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.plot.plot) for more details on the render steps

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `scene` | `Scene` | The scene |
| `camera` | `Camera` | The camera used for this render phase. |
| `plot` | [`Plot`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.plot.plot) | The 3D plot |
| `renderer` | `WebGLRenderer` | The renderer |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[afterRender](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#afterrender)

#### beforeRender

▸ **beforeRender**(`scene`, `camera`, `plot`, `renderer`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

This function is called prior to rendering and can update this object's content.<br>
<br>
It should not trigger any invalidateObject though.<br>
Note that it is not necessary nor recommended to explicitly call beforeRender on this object's children as beforeRender will be called on all nodes present in the scene.<br>
<br>
This will be executed after the transformations simplification.<br>
<br>

**`See`**

[Plot](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.plot.plot) for more details on the render steps

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `scene` | `Scene` | The scene |
| `camera` | `Camera` | The camera used for this render phase. |
| `plot` | [`Plot`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.plot.plot) | The 3D plot |
| `renderer` | `WebGLRenderer` | The renderer |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[beforeRender](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#beforerender)

#### dispose

▸ **dispose**(): `void`

Dispose object

#### Returns

`void`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[dispose](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#dispose)

#### getClassName

▸ **getClassName**(): `string`

#### Returns

`string`

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getclassname)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#getclassname)

#### getCorner

▸ `Abstract` **getCorner**(`index`, `target?`): `Vector3`

Return the world position of a specific corner of this overlayable (rectangular) object.<br>

**`Example`**

```ts
The indices represent the 4 corners of the overlayable object like so:
0---1
|   |
2---3
```

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `index` | `number` | Index of the corner, from 0 to 3. |
| `Optional` `target` | `Vector3` | Optional point Vector3 to avoid unnecessary object creation. Will be updated and returned if provided. |


#### Returns

`Vector3`

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getCorner](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getcorner)

#### getLocalCorner

▸ `Abstract` **getLocalCorner**(`index`, `target?`): `Vector3`

Return the local position of a specific corner of this overlayable (rectangular) object.<br>

**`Example`**

```ts
The indices represent the 4 corners of the overlayable object like so:
0---1
|   |
2---3
```

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `index` | `number` | Index of the corner, from 0 to 3. |
| `Optional` `target` | `Vector3` | Optional point Vector3 to avoid unnecessary object creation. Will be updated and returned if provided. |


#### Returns

`Vector3`

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getLocalCorner](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getlocalcorner)

#### getMesh

▸ `Abstract` **getMesh**(): `Mesh`<`BufferGeometry`<`NormalBufferAttributes`&gt;, `Material` | `Material`[], `Object3DEventMap`&gt;

Return the Three.js Mesh of this overlayable object.<br>
Used in intersections to compute the object boundaries, to generate transformations for the overlay.

#### Returns

`Mesh`<`BufferGeometry`<`NormalBufferAttributes`&gt;, `Material` | `Material`[], `Object3DEventMap`&gt;

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getMesh](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getmesh)

#### getOptions

▸ **getOptions**(): `Required`<[`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#options)&gt;

Get options

#### Returns

`Required`<[`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#options)&gt;

options object

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[getOptions](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#getoptions)

#### getOverlay

▸ `Abstract` **getOverlay**(): [`Group`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.group.group)<[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)&gt;

Return the current 2D Shape group used to render the overlay.

#### Returns

[`Group`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.group.group)<[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)&gt;

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getOverlay](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getoverlay)

#### getOverlayTextureBounds

▸ `Abstract` **getOverlayTextureBounds**(): [`Rect`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.rect.rect)

Return the overlay texture bounds, (unit is in pixel).

#### Returns

[`Rect`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.util.rect.rect)

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[getOverlayTextureBounds](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#getoverlaytexturebounds)

#### getVisible

▸ **getVisible**(): `boolean`

Get visible

#### Returns

`boolean`

true, if object is visible

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[getVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#getvisible)

#### invalidateObject

▸ **invalidateObject**<`T`&gt;(`event?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Notifies this object and its parent that this object has been invalidated.<br>
If this object is in a Plot, it will be marked as dirty and will trigger a rendering cycle.<br>

#### Type parameters

| Name |
|  --- |
| `T` |


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `event` | [`Event`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.event.event)<`T`&gt; | The event to fire |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[invalidateObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#invalidateobject)

#### isDisposed

▸ **isDisposed**(): `boolean`

Returns whether this object has been disposed

#### Returns

`boolean`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[isDisposed](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#isdisposed)

#### isSelectable

▸ **isSelectable**(): `boolean`

Return if this object can be picked/selected (see RendererPicking).<br>

#### Returns

`boolean`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[isSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#isselectable)

#### notify

▸ **notify**(`type`, `source`, `args?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

* Notify listeners. Parent nodes will also be notified if they are instances of geotoolkit3d.scene.Object3D


#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `type` | `string` | event types |
| `source` | `any` | of the event |
| `Optional` `args` | `any` | arguments of the event |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[notify](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#notify)

#### off

▸ **off**(`type?`, `callback?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Detach listener on event.
Calling .off() with no arguments removes all attached listeners.
Calling .off(type) with no callback removes all attached listeners for specific type.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `type` | `string` | type of the event |
| `Optional` `callback` | [`EventListener`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util#eventdispatcher#eventlistener) | function to be called |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[off](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#off)

▸ **off**<`E`&gt;(`type`, `callback`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Type parameters

| Name | Type |
|  --- | --- |
| `E` | extends `string` |


#### Parameters

| Name  | Type  |
|  --- | --- |
| `type` | `E` |
| `callback` | (`eventType`: `E`, `sender`: [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel), `args`: [`EventMap`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#eventmap)[`E`]) => `void` |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[off](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#off)

#### on

▸ **on**(`type`, `callback`, `options?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Attach listener on event that will be called whenever the specified event is delivered to the target
<p>
If the callback function is already in the list of event listeners for this target,
the function is not added a second time.
</p>
<p>
If a particular anonymous function is in the list of event listeners registered for a
certain target, and then later in the code, an identical anonymous function is given
in an "on" call, the second function will also be added to the list of
event listeners for that target.
</p>

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `type` | `string` | type of event or property |
| `callback` | [`EventListener`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util#eventdispatcher#eventlistener) | to be called |
| `Optional` `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util#eventdispatcher#options) | options of subscription |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[on](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#on)

▸ **on**<`E`&gt;(`type`, `callback`, `options?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Type parameters

| Name | Type |
|  --- | --- |
| `E` | extends `string` |


#### Parameters

| Name  | Type  |
|  --- | --- |
| `type` | `E` |
| `callback` | (`eventType`: `E`, `sender`: [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel), `args`: [`EventMap`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#eventmap)[`E`]) => `void` |
| `Optional` `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit.util#eventdispatcher#options) |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[on](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#on)

#### onStatsUpdated

▸ **onStatsUpdated**(`metrics`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

This function is called when the plot has updated performance metric.<br>
It will be called every set number of frames.<br>
The number of frame is customizable in the plot options advancedrendering.performancemetrics.updateframeperiod and is 100 by default.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `metrics` | [`PerformanceMetrics`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.plot.plot#performancemetrics) | The performance metrics. |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[onStatsUpdated](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#onstatsupdated)

#### onVisibilityChanged

▸ `Protected` **onVisibilityChanged**(): `void`

This method is called if visibility is changed.  Send event [Events.VisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#events#visibilitychanged)

#### Returns

`void`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[onVisibilityChanged](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#onvisibilitychanged)

#### remove

▸ **remove**(`object`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Removes object as child of this object.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `object` | `Object3D`<`Object3DEventMap`&gt; | `Object3D`<`Object3DEventMap`&gt;[] | object |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[remove](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#remove)

#### setOptions

▸ **setOptions**(`options?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Set options

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `Optional` `options` | [`Options`](/solutions/geotoolkit/geotoolkit_js/apis/modules/geotoolkit3d.scene-3#object3d#options) | options object |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[setOptions](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#setoptions)

#### setOverlay

▸ `Abstract` **setOverlay**(`group`): `void`

Set the current 2D Shape group used to render the overlay.

#### Parameters

| Name  | Type  |
|  --- | --- |
| `group` | [`Group`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.group.group)<[`Node`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit.scene.node.node)&gt; |


#### Returns

`void`

#### Implementation of

[IOverlayableObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject).[setOverlay](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.util-5.intersection.ioverlayableobject.ioverlayableobject#setoverlay)

#### setPosition

▸ **setPosition**(`position`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Set Object's local position.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `position` | `Object` | local position |
| `Optional` `position.x` | `number` | - 
 |
| `Optional` `position.y` | `number` | - 
 |
| `Optional` `position.z` | `number` | - 
 |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[setPosition](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#setposition)

#### setRotation

▸ **setRotation**(`x`, `y`, `z`, `order?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Set Object's local rotation ([Euler angles](https://en.wikipedia.org/wiki/Euler_angles)), in radians.

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `x` | `number` | x angle |
| `y` | `number` | y angle |
| `z` | `number` | z angle |
| `Optional` `order` | `EulerOrder` | euler order |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[setRotation](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#setrotation)

#### setSelectable

▸ **setSelectable**(`selectable`): `void`

Set if this object can be picked/selected (see RendererPicking).<br>

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `selectable` | `boolean` | if can be selected |


#### Returns

`void`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[setSelectable](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#setselectable)

#### setVisible

▸ **setVisible**(`visible`, `silent?`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

Set visible

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `visible` | `boolean` | true, if object is visible |
| `Optional` `silent` | `boolean` | true, if object shouldn't be invalidated |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

this

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[setVisible](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#setvisible)

#### updateObject

▸ **updateObject**(`scene`, `camera`): [`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

This function is called prior to rendering and can update this object's content.<br>
<br>
It should not trigger any invalidateObject though.<br>
Note that it is not necessary nor recommended to explicitly call updateObject on this object's children as updateObject will be called on all nodes present in the scene.<br>
<br>
This will be executed before the transformations simplification.<br>
<br>

**`See`**

[Plot](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.plot.plot) for more details on the render steps

#### Parameters

| Name  | Type  | Description  |
|  --- | --- | --- |
| `scene` | `Scene` | The scene |
| `camera` | `Camera` | The camera |


#### Returns

[`AbstractPanel`](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.panel.abstractpanel.abstractpanel)

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[updateObject](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#updateobject)

#### useOwnHighlight

▸ **useOwnHighlight**(): `boolean`

Returns true if this object make its own highlight effect (like geotoolkit3d.scene.reservoir.hexahedral.ReservoirGrid)
This is to prevent unnecessary executions of the costly highlight passes.

#### Returns

`boolean`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[useOwnHighlight](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#useownhighlight)

#### getClassName

▸ `Static` **getClassName**(): `string`

#### Returns

`string`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[getClassName](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#getclassname-1)

#### register

▸ `Static` **register**(): `void`

Register object for special processing through a callback function<br>

**`Example`**

```ts
geotoolkit3d.util.ObjectProcessor.getDefaultInstance().registerObject(this.getClassName(), callback);
```

**`Deprecated`**

since 5.0, to allow custom object highlighting, please instead make your Object implement
the interface geotoolkit3d/scene/ICustomHighlight.

#### Returns

`void`

#### Inherited from

[Object3D](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d).[register](/solutions/geotoolkit/geotoolkit_js/apis/classes/geotoolkit3d.scene-3.object3d.object3d#register)