# Banned Nodes

This document outlines the list of **banned nodes** used in Unity Visual Scripting within our project environment. These nodes are filtered to ensure safety, stability, and prevent misuse of potentially dangerous or editor-only functionalities.

***

### 🧾 Summary of Banned Categories

| Category                         | Description                                              |
| -------------------------------- | -------------------------------------------------------- |
| 🔥 GameObject Methods            | Dangerous methods like`Find`,`SendMessage`, etc.         |
| 🛑 Editor-Only Members           | Available only in Unity Editor; not available at runtime |
| 💥 Unsafe or Problematic Methods | Includes`DestroyImmediate`, etc.                         |
| 🎮 Gamepad Audio APIs            | Not supported outside of editor/gamepad modules          |
| 📸 Camera & Scene Control        | Prevents tampering with main camera or scene objects     |
| ⏱ Time Manipulation              | Avoids time scale changes and timing issues              |

***

### 🔒 Full List of Banned Nodes

#### 1. **GameObject Methods**

These methods are blocked due to potential performance issues or misuse:

* `GameObject.Find`
* `GameObject.FindWithTag`
* `GameObject.FindGameObjectWithTag`
* `GameObject.FindGameObjectsWithTag`
* `GameObject.SendMessage`
* `GameObject.SendMessageUpwards`

***

#### 2. **UnityEngine.Object Methods**

These global search and object manipulation methods are restricted:

* `UnityEngine.Object.FindObjectOfType`
* `UnityEngine.Object.FindObjectsOfType`
* `UnityEngine.Object.FindObjectsOfTypeIncludingAssets`
* `UnityEngine.Object.FindObjectsOfTypeAll`
* `UnityEngine.Object.FindSceneObjectsOfType`
* `UnityEngine.Object.DontDestroyOnLoad`
* `UnityEngine.Object.DestroyImmediate`

***

#### 3. **Component Methods**

Avoid dynamic message sending:

* `Component.SendMessage`
* `Component.SendMessageUpwards`

***

#### 4. **Editor-Only Members**

These members exist only in Unity Editor and cause compile errors if used in runtime builds:

**MeshRenderer**

* `MeshRenderer.stitchLightmapSeams`
* `MeshRenderer.receiveGI`
* `MeshRenderer.scaleInLightmap`

**LightProbeGroup**

* `LightProbeGroup.dering`
* `LightProbeGroup.probePositions` *(read-only)*

**Light**

* `Light.lightmapBakeType`
* `Light.SetLightDirty`
* `Light.shadowRadius`
* `Light.areaSize`
* `Light.shadowAngle`

**Texture / Texture2D**

* `Texture.imageContentsHash`
* `Texture2D.alphaIsTransparency`

**LightingSettings**

A long list of advanced lighting settings related to lightmapping:

* `LightingSettings.filteringAtrousPositionSigmaIndirect`
* `LightingSettings.filteringAtrousPositionSigmaDirect`
* ... *(many others – mostly lightmapper-related properties)*

**MonoBehaviour**

* `MonoBehaviour.runInEditMode`

***

#### 5. **Audio (Editor Only)**

Used for gamepad audio output, which is not supported in runtime:

* `AudioSource.PlayOnGamepad`
* `AudioSource.GamepadSpeakerSupportsOutputType`
* `AudioSource.gamepadSpeakerOutputType`
* `AudioSource.SetGamepadSpeakerRestrictedAudio`
* `AudioSource.SetGamepadSpeakerMixLevelDefault`
* `AudioSource.DisableGamepadOutput`

***

#### 7. **UI (Editor Only)**

Related to UI rebuild events:

* `UnityEngine.UI.Graphic.OnRebuildRequested`
* `UnityEngine.UI.Text.OnRebuildRequested`

***

#### 8. **ParticleSystem (Editor Only)**

Editor-specific particle system tools:

* `ParticleSystemRenderer.supportsMeshInstancing`
* `ParticleSystemForceField.FindAll`

***

#### 9. **Time Manipulation**

To avoid unexpected behavior in gameplay:

* `Time.timeScale`
* `Time.fixedDeltaTime`
* `Time.maximumDeltaTime`
* `Time.maximumParticleDeltaTime`
* `Time.captureDeltaTime`
* `Time.captureFramerate`

***

#### 10. **Camera Access**

Prevents interference with the main camera or scene management:

* `Camera.main`
* `Camera.allCameras`
* `Camera.current`
* `Camera.scene`

***

#### 11. **Graphics Settings**

Advanced rendering features that should not be modified:

* `GraphicsSettings.videoShadersIncludeMode`

***

### 🛑 Blocked Types

The following types are completely blocked from being used in Visual Scripting graphs:

* `Application` – Contains dangerous methods like loading/unloading scenes.
* `Resources` – Allows loading assets by string path, which is unsafe.
* `SceneManager` – Loads or unloads scenes, which could break the flow.
* `Scene` – Gets root game objects, which may expose critical objects.
* `VideoShadersIncludeMode`


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.overthereality.ai/over-sdk-manual/banned-nodes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
