# 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="https://166712561-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fp47l4hoFKIHGBwL1Cm4D%2Fuploads%2F6YVLnrkERCD0hrfuo6vk%2Fimage.png?alt=media&#x26;token=6d7c7d70-92fa-4c14-aad6-08c28bc8438f" 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.
