> For the complete documentation index, see [llms.txt](https://arawn-software-publishing.gitbook.io/arawn/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://arawn-software-publishing.gitbook.io/arawn/modules/the-visual-engine.md).

# The Visual Engine

`RememberVisualEngineManager` is a Crystal Save “Remember” component that persists the runtime configuration of The Visual Engine’s `TVEManager`. When attached to a `TVEManager`, it captures a comprehensive snapshot of global lighting, atmosphere, and element-rendering settings so they can be restored later

<figure><img src="/files/u6tEoPldDyzVhwRD46jn" alt=""><figcaption></figcaption></figure>

> **Compilation Note:** The component is included only when both `MEMORYPACK` and `ARAWN_REMEMBERME` scripting symbols are defined

### Serialized Data

The nested `TVEManagerData` class (annotated with `MemoryPackable`) stores all relevant manager properties in a serializable form, covering:

* Motion & season controls
* Element visibility and ordering
* Renderer texture sizes, radii, and blend factor
* Global coat, paint, glow, atmosphere, and form parameters

### Serialization Process

`SerializeComponentData` builds a `TVEManagerData` object from the active `TVEManager`, then serializes it via `SaveDataSerializer`. Any serialization errors are logged for debugging

### Deserialization and Application

`DeserializeComponentData` reconstructs the `TVEManagerData` from bytes and delegates to `ApplyData`, which writes all saved values back to the manager. It refreshes render buffers to honor texture-size changes and triggers a one-time sort pass if needed

### Usage Notes

1. Add the component via the menu path **Crystal Save → Remember Components → Remember TVE Manager**.
2. Ensure `MEMORYPACK` and `ARAWN_REMEMBERME` defines are enabled.
3. During gameplay, the component automatically serializes/deserializes the manager’s state using Crystal Save’s persistence system.

***

### Setup

1. **Add the Remember Component**
   * Select the character GameObject that owns **TVE Manager**.
   * Add **Remember Component** (`RememberComposite`) via\
     `Add Component → Crystal Save/Remember Components/Remember Component`.
   * In the Remember Component’s list, add **Remember Visual Engine Manager**.
2. **Behind the scenes**
   * `RememberComposite` keeps a designer-controlled list of hidden `SaveableComponent` instances so their IDs persist across reloads
3. **Result**
   * A hidden `RememberVisualEngineManager` component is created and registered with the Save system, automatically bound to `TVE Manager` thanks to `[RequireComponent]` and `[RememberTarget]` attributes.
4. Demo Scene
   * Diorama Demo scene requires import of official The Visual Engine Demo Scene.

***

### Configuration Options

Remember Visual Engine Manager has no configuration Options

***

### Save/Load Flow

{% @mermaid/diagram content="graph TD
UCC\["TVE Manager<br/>GameObject"]
RC\["Remember Component<br/>(RememberComposite)"]
RUC\["Remember Visual Engine Manager"]
Snapshot\["Visual Engine Manager Snapshot"]
SM\["Crystal Save<br/>SaveManager"]

```
UCC --> RC
RC --> RUC
RUC -->|serialize/deserialize| Snapshot
Snapshot --> SM
```

" %}

1. **Serialization** – When a save occurs, the component builds a `Visual Engine Manager Snapshot` with the enabled data and hands it to the SaveManager.
2. **Deserialization** – On load, the snapshot is restored, reapplying gear, location, camera view, input settings, and attributes.

***

### Summary

* Works with Boxophobic's The Visual Engine by default and requires `TVE Manager`.component.
* Deployed via `RememberComposite` (aka Remember Component) to maintain stable save IDs.
* There is no Remember Visual Engine manager-specific configuration.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## 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://arawn-software-publishing.gitbook.io/arawn/modules/the-visual-engine.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.
