Skip to content

Editor Guide

xAstroBoy edited this page Jul 11, 2026 · 2 revisions

Editor Guide

The editor is a custom Blender-style toolkit drawn through the renderer's own Vulkan (no external UI libs). Everything is undoable (Ctrl+Z / Ctrl+Y), everything persists to saved/<env>.hsledit, and a cook auto-saves first — you can't lose edits to a cook.

Getting around

Input Action
WASD + QE Fly camera (scroll = speed)
Left-drag (viewport) Look around
Click Select mesh / item (outliner syncs)
Tab / Shift+Tab, N / B Cycle mesh selection
F Wireframe
P Screenshot (hsr_shot.png)
Esc Cancel tool → deselect → quit

The outliner has per-item / per-mesh visibility eyes, rename, multi-select (drag-paint the eyes to toggle rows quickly), and a right-click context menu (component from mesh, collision exclude, delete, …). Deleted meshes are gone from the cook too.

Transforms & gizmos

Move / Rotate / Scale gizmos (always-visible viewport toggles), with numeric Position / Rotation (euler) / Quat / Scale rows in the Object tab — the gizmo and the numbers edit the same state. The center square on the scale gizmo = uniform scale. X-ray mode helps grab buried things.

Scene components (the Meta ones)

+ Add (or right-click a mesh → "Make component from mesh") places real Horizon components — each shows the actual Meta class it cooks to:

Item Cooks to Notes
Spawn Point SpawnPointPlatformComponent ≥1 local-start spawn required; auto-floor snap.
Chair / Seat AvatarSittingPlatformComponent Haven-exact recipe: sittable, billboard icon, draggable exit handle (stand-up spot).
Box Collider ColliderBoxPlatformComponent Invisible wall / path blocker; walk-sim respects it.
Navmesh ColliderMeshPlatformComponent Bake walkable collision from selected meshes (Flat / Smart / Selection modes) — see below.
Wall Placement hpi::WallPlacementComponent Where the Quest home lets you hang windows/posters. The viewport arrow shows the props side; auto-fit guesses it from your camera — if it guessed wrong, press "Flip facing (props on the OTHER side)" in the item panel (or rotate it 180°).
Locomotion Hotspot hpi::LocomotionHotspotComponent Teleport dot (visible icon + trigger).
Kill Floor / Boundary ColliderBoundaryPlanePlatformComponent Respawn plane; facing = UnitAxis.

Navmesh: multi-select the floors you want walkable → + Add → Navmesh (from selection) → cook. The green overlay (and slope coloring) previews exactly what cooks. Meshes can be collision- excluded from the right-click menu.

Walk mode (Walk-sim toggle): drop into the env as a player — real floor collision, box/wall blocking, stairs — to sanity-check the navmesh before cooking. P exits.

Materials & textures

  • Tint / flags per mesh (blend, additive, double-sided…) — WYSIWYG: preview and cook match.
  • Adjust texture — brightness / saturation / hue baked into the texture, live preview.
  • Remove baked shadows — large-scale luminance flatten for de-lightmapping a texture.
  • Generate texture — procedural replacements.
  • Texture export (PNG next to saved/) and one-step texture undo.
  • Shader decompile → edit → hot-reload: dumps the mesh's active SPIR-V to GLSL (saved/shaders/), you edit it, "Compile + APPLY" hot-reloads it live in the viewport.

Geometry tools

  • Knife — cut the selected mesh (selection-scoped; it won't slice everything in the path).
  • Slicer / hole inspector — visual "which hole to seal" picking, contour ear-clip rebuild.
  • Prefabs — save a selection as .hsrprefab, drag-drop it into any env to spawn it.
  • Dome / skybox tools — sphere-fit dome completion (closes half-domes on the fitted sphere), "Make skybox backdrop" for far vistas (escapes the device's far-clip), far-fit.

Timeline & audio

  • Scrub / pause / speed for every animation in the env; the playhead advances live.
  • Quest sync: with the device bridge connected, pause/scrub mirrors to the headset — desktop and headset freeze on the same frame.
  • Audio panel: play the env's background loop on PC, replace it with your own file (auto-converts), or export it. Cooks as an auto-starting FMOD bank.

Blender round-trip

Export → Blender: writes the whole env as glTF 2.0 (+ a .blendmeta.json sidecar). Import ← Blender: re-imports the edited glTF as a fresh editor instance — edit meshes/UVs in Blender, then cook from here.

Cook preview

"Preview cooked (HSL)" swaps the viewport to the just-cooked APK in the same window — you see the closest desktop approximation of what the device gets (verify on the headset — the preview can't always match it), then "Back to source" returns. Drag-and-drop any other env file to switch environments in place.

Clone this wiki locally