Ir al contenido

Mirror — Changelog

Esta página aún no está disponible en tu idioma.

All notable changes to this pack are recorded here.

The format follows Keep a Changelog and the pack follows Semantic Versioning.

The version below must always match the one declared in Runtime/AssemblyInfo.cs — that is the version the FOS Hub shows, and the one the Hub compares against the installed Core.


Nothing yet.


First release. Requires FOS Essentials Core 1.0.0.

Core components

  • FOSMirrorManager — one per scene, owns the loop and arbitrates every mirror.
  • FOSMirrorTarget — one per mirror, holds its settings and its on/off state, and does no per-frame work.
  • FOSMirrorButton and FOSMirrorInteract — manual controls, each able to toggle, force on or force off.

Switching

  • Distance culling with squared distances, two-threshold hysteresis and round-robin checks, spread over a configurable per-frame budget.
  • A mirror switched on is measured immediately instead of waiting for its turn.
  • Free and Exclusive modes; exclusive is enforced at startup as well.
  • Toggle scope per mirror: Local (no networking) or Synchronized ([UdonSynced], manual sync, ownership taken before writing, state rebuilt for late joiners through OnDeserialization).
  • FOSTurnAllOff() on the manager as a panic button.

Appearance

  • Mirror surface handling: hide the renderer, or swap it to an off material — a disabled mirror component otherwise leaves a pure black rectangle.
  • Materials/FOSMirrorOff.mat, a dark glossy pane, using Unity’s built-in Standard shader so the material never depends on assets outside Unity.
  • Extra components and extra colliders switched along with the mirror, in separate lists.

Quality

  • m_ReflectLayers and m_DisablePixelLights exposed on the target, applied at Start.
  • Presets: Untouched (default, writes nothing), Players only, Players and world, World only, Nothing, Custom. The preset resolves into the layer mask field immediately, so the mask shown is the mask applied.
  • Apply to the mirror now, to write the settings in the editor as well.

Editor tooling

  • Scene scan: adds the components, wires mirror, manager and surface, fills the manager’s list. Re-runnable without overwriting manual settings; legacy non-SDK3 mirrors are counted and reported.
  • Automatic OnClick wiring for a UI Button, including detection of an existing wiring through SerializedObject, argument included.
  • Indicative cost estimate, per mirror and per scene, weighted in the order that actually matters: reflected layers, then how many mirrors can render at once, then screen coverage.
  • Orientation gizmo: mirror plane, arrow on the reflecting face, back face crossed out. The normal is read from the mesh.
  • Warnings for the classic mistakes: untouched default layer mask, UiMenu or PlayerLocal reflected, players reflected without MirrorReflection, several managers in the scene, a mirror missing from the manager’s list, several mirrors starting on in exclusive mode, and a toggle collider listed among the extra colliders.
  • Interface translated into English, French, Spanish and German.

Prefabs

  • FOSMirrorManager and FOSMirrorExample.
  • No [CustomEditor(typeof(VRC_MirrorReflection))] is declared: Unity accepts only one per type and VRWorldToolkit already ships one. Both tools work side by side.
  • The reasoning behind each of these choices is in README.md.