@relu-interactives/spatial-ecs 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (308) hide show
  1. package/README.md +125 -0
  2. package/dist/System-rXAmagXA.d.cts +659 -0
  3. package/dist/System-rXAmagXA.d.ts +659 -0
  4. package/dist/Video-CDemv74U.d.cts +1261 -0
  5. package/dist/Video-ChKV1UI7.d.ts +1261 -0
  6. package/dist/assets/draco/draco_decoder.js +34 -0
  7. package/dist/assets/draco/draco_decoder.wasm +0 -0
  8. package/dist/assets/draco/draco_wasm_wrapper.js +117 -0
  9. package/dist/chunk-AYEF3X2P.js +223 -0
  10. package/dist/chunk-AYEF3X2P.js.map +1 -0
  11. package/dist/chunk-MAWBTMCG.js +1722 -0
  12. package/dist/chunk-MAWBTMCG.js.map +1 -0
  13. package/dist/chunk-NFDTIYR4.js +248 -0
  14. package/dist/chunk-NFDTIYR4.js.map +1 -0
  15. package/dist/chunk-OY7ZODZP.js +16 -0
  16. package/dist/chunk-OY7ZODZP.js.map +1 -0
  17. package/dist/chunk-P2YDX5DB.js +3304 -0
  18. package/dist/chunk-P2YDX5DB.js.map +1 -0
  19. package/dist/chunk-QHILSPT4.js +3 -0
  20. package/dist/chunk-QHILSPT4.js.map +1 -0
  21. package/dist/chunk-XWIEEJ7Z.js +1315 -0
  22. package/dist/chunk-XWIEEJ7Z.js.map +1 -0
  23. package/dist/components/index.cjs +1745 -0
  24. package/dist/components/index.cjs.map +1 -0
  25. package/dist/components/index.d.cts +4 -0
  26. package/dist/components/index.d.ts +4 -0
  27. package/dist/components/index.js +4 -0
  28. package/dist/components/index.js.map +1 -0
  29. package/dist/docs/api/Behaviour/classes/Behaviour.md +554 -0
  30. package/dist/docs/api/Behaviour/index.md +15 -0
  31. package/dist/docs/api/Component/classes/Component.md +57 -0
  32. package/dist/docs/api/Component/index.md +15 -0
  33. package/dist/docs/api/components/classes/AnimationComponent.md +318 -0
  34. package/dist/docs/api/components/classes/AudioComponent.md +114 -0
  35. package/dist/docs/api/components/classes/CameraComponent.md +59 -0
  36. package/dist/docs/api/components/classes/EntityType.md +48 -0
  37. package/dist/docs/api/components/classes/Environment.md +47 -0
  38. package/dist/docs/api/components/classes/ImageComponent.md +57 -0
  39. package/dist/docs/api/components/classes/ImageTarget.md +60 -0
  40. package/dist/docs/api/components/classes/ImageTargetAnchor.md +48 -0
  41. package/dist/docs/api/components/classes/LightComponent.md +70 -0
  42. package/dist/docs/api/components/classes/MaterialComponent.md +181 -0
  43. package/dist/docs/api/components/classes/MeshComponent.md +48 -0
  44. package/dist/docs/api/components/classes/MeshGeometryComponent.md +64 -0
  45. package/dist/docs/api/components/classes/ModelComponent.md +49 -0
  46. package/dist/docs/api/components/classes/Name.md +46 -0
  47. package/dist/docs/api/components/classes/Object3DRef.md +54 -0
  48. package/dist/docs/api/components/classes/ParentId.md +47 -0
  49. package/dist/docs/api/components/classes/PhysicsComponent.md +82 -0
  50. package/dist/docs/api/components/classes/Postprocessing.md +49 -0
  51. package/dist/docs/api/components/classes/ScriptComponent.md +54 -0
  52. package/dist/docs/api/components/classes/Selectable.md +46 -0
  53. package/dist/docs/api/components/classes/SelectionTransformState.md +54 -0
  54. package/dist/docs/api/components/classes/SpriteComponent.md +55 -0
  55. package/dist/docs/api/components/classes/TransformComponent.md +197 -0
  56. package/dist/docs/api/components/classes/VideoComponent.md +123 -0
  57. package/dist/docs/api/components/functions/normalizePhysicsState.md +23 -0
  58. package/dist/docs/api/components/index.md +94 -0
  59. package/dist/docs/api/components/type-aliases/AnimationComponentOptions.md +42 -0
  60. package/dist/docs/api/components/type-aliases/CameraComponentOptions.md +45 -0
  61. package/dist/docs/api/components/type-aliases/CameraProjection.md +15 -0
  62. package/dist/docs/api/components/type-aliases/CameraRuntimeType.md +15 -0
  63. package/dist/docs/api/components/type-aliases/ColliderShape.md +15 -0
  64. package/dist/docs/api/components/type-aliases/ColliderState.md +62 -0
  65. package/dist/docs/api/components/type-aliases/CubeMeshParameters.md +27 -0
  66. package/dist/docs/api/components/type-aliases/EditableMeshObjectKind.md +15 -0
  67. package/dist/docs/api/components/type-aliases/EnvironmentFogState.md +37 -0
  68. package/dist/docs/api/components/type-aliases/EnvironmentFogType.md +15 -0
  69. package/dist/docs/api/components/type-aliases/EnvironmentGradientEffect.md +15 -0
  70. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxState.md +34 -0
  71. package/dist/docs/api/components/type-aliases/EnvironmentSkyboxType.md +15 -0
  72. package/dist/docs/api/components/type-aliases/EnvironmentState.md +29 -0
  73. package/dist/docs/api/components/type-aliases/ImageTargetAnchorOptions.md +25 -0
  74. package/dist/docs/api/components/type-aliases/ImageTargetReference.md +33 -0
  75. package/dist/docs/api/components/type-aliases/LightValueState.md +41 -0
  76. package/dist/docs/api/components/type-aliases/MaterialTypeValue.md +15 -0
  77. package/dist/docs/api/components/type-aliases/MaterialValueState.md +75 -0
  78. package/dist/docs/api/components/type-aliases/MeshGeometryParameters.md +13 -0
  79. package/dist/docs/api/components/type-aliases/MeshGeometryParametersByKind.md +33 -0
  80. package/dist/docs/api/components/type-aliases/PhysicsState.md +25 -0
  81. package/dist/docs/api/components/type-aliases/PlaneMeshParameters.md +25 -0
  82. package/dist/docs/api/components/type-aliases/PostprocessingState.md +164 -0
  83. package/dist/docs/api/components/type-aliases/RadiusHeightMeshParameters.md +25 -0
  84. package/dist/docs/api/components/type-aliases/RadiusMeshParameters.md +23 -0
  85. package/dist/docs/api/components/type-aliases/RigidbodyState.md +53 -0
  86. package/dist/docs/api/components/type-aliases/RigidbodyType.md +19 -0
  87. package/dist/docs/api/components/type-aliases/ScriptEntry.md +38 -0
  88. package/dist/docs/api/components/type-aliases/TextureFilteringValue.md +15 -0
  89. package/dist/docs/api/components/type-aliases/TransformData.md +27 -0
  90. package/dist/docs/api/components/type-aliases/TransformModeValue.md +15 -0
  91. package/dist/docs/api/components/type-aliases/TransformSpaceValue.md +15 -0
  92. package/dist/docs/api/components/type-aliases/Vec3.md +27 -0
  93. package/dist/docs/api/components/variables/DEFAULT_COLLIDER_STATE.md +13 -0
  94. package/dist/docs/api/components/variables/DEFAULT_ENVIRONMENT_STATE.md +13 -0
  95. package/dist/docs/api/components/variables/DEFAULT_MESH_GEOMETRY_PARAMETERS.md +13 -0
  96. package/dist/docs/api/components/variables/DEFAULT_PHYSICS_STATE.md +13 -0
  97. package/dist/docs/api/components/variables/DEFAULT_POSTPROCESSING_STATE.md +13 -0
  98. package/dist/docs/api/components/variables/DEFAULT_RIGIDBODY_STATE.md +13 -0
  99. package/dist/docs/api/index/classes/AnimationStateMachine.md +201 -0
  100. package/dist/docs/api/index/classes/AnimationStateManager.md +253 -0
  101. package/dist/docs/api/index/classes/AnimationSystem.md +68 -0
  102. package/dist/docs/api/index/classes/AudioSystem.md +98 -0
  103. package/dist/docs/api/index/classes/CameraSyncSystem.md +49 -0
  104. package/dist/docs/api/index/classes/EnvironmentSyncSystem.md +75 -0
  105. package/dist/docs/api/index/classes/InputSystem.md +449 -0
  106. package/dist/docs/api/index/classes/LightSyncSystem.md +49 -0
  107. package/dist/docs/api/index/classes/MaterialSyncSystem.md +67 -0
  108. package/dist/docs/api/index/classes/MeshGeometrySystem.md +49 -0
  109. package/dist/docs/api/index/classes/ObjectManagementSystem.md +298 -0
  110. package/dist/docs/api/index/classes/ObjectVisibilitySystem.md +49 -0
  111. package/dist/docs/api/index/classes/PhysicsSyncSystem.md +83 -0
  112. package/dist/docs/api/index/classes/PostprocessingSyncSystem.md +80 -0
  113. package/dist/docs/api/index/classes/RenderSystem.md +64 -0
  114. package/dist/docs/api/index/classes/ScriptBehaviourSystem.md +83 -0
  115. package/dist/docs/api/index/classes/TransformSyncSystem.md +49 -0
  116. package/dist/docs/api/index/classes/VideoSystem.md +97 -0
  117. package/dist/docs/api/index/classes/World.md +1405 -0
  118. package/dist/docs/api/index/functions/createAnimationComponent.md +28 -0
  119. package/dist/docs/api/index/functions/createAudioComponent.md +32 -0
  120. package/dist/docs/api/index/functions/createCameraComponent.md +28 -0
  121. package/dist/docs/api/index/functions/createEntityTypeComponent.md +28 -0
  122. package/dist/docs/api/index/functions/createEnvironmentComponent.md +28 -0
  123. package/dist/docs/api/index/functions/createImageComponent.md +28 -0
  124. package/dist/docs/api/index/functions/createImageTargetAnchorComponent.md +28 -0
  125. package/dist/docs/api/index/functions/createImageTargetComponent.md +28 -0
  126. package/dist/docs/api/index/functions/createLightComponent.md +28 -0
  127. package/dist/docs/api/index/functions/createMaterialComponent.md +28 -0
  128. package/dist/docs/api/index/functions/createMeshComponent.md +28 -0
  129. package/dist/docs/api/index/functions/createMeshGeometryComponent.md +28 -0
  130. package/dist/docs/api/index/functions/createModelComponent.md +28 -0
  131. package/dist/docs/api/index/functions/createNameComponent.md +28 -0
  132. package/dist/docs/api/index/functions/createObject3DRefComponent.md +28 -0
  133. package/dist/docs/api/index/functions/createParentIdComponent.md +28 -0
  134. package/dist/docs/api/index/functions/createPhysicsComponent.md +30 -0
  135. package/dist/docs/api/index/functions/createPostprocessingComponent.md +28 -0
  136. package/dist/docs/api/index/functions/createScriptComponent.md +28 -0
  137. package/dist/docs/api/index/functions/createSelectableComponent.md +28 -0
  138. package/dist/docs/api/index/functions/createSelectionTransformStateComponent.md +28 -0
  139. package/dist/docs/api/index/functions/createSpriteComponent.md +28 -0
  140. package/dist/docs/api/index/functions/createTransformComponent.md +28 -0
  141. package/dist/docs/api/index/functions/createVideoComponent.md +28 -0
  142. package/dist/docs/api/index/functions/hydrateWorldFromSnapshot.md +28 -0
  143. package/dist/docs/api/index/functions/hydrateWorldFromSnapshotDetailed.md +28 -0
  144. package/dist/docs/api/index/functions/registerDefaultComponentFactories.md +23 -0
  145. package/dist/docs/api/index/functions/registerDefaultFactories.md +23 -0
  146. package/dist/docs/api/index/index.md +249 -0
  147. package/dist/docs/api/index/interfaces/EcsSystem.md +50 -0
  148. package/dist/docs/api/index/interfaces/StateMachine.md +26 -0
  149. package/dist/docs/api/index/type-aliases/AnimationStateCallbacks.md +25 -0
  150. package/dist/docs/api/index/type-aliases/ComponentFactory.md +25 -0
  151. package/dist/docs/api/index/type-aliases/EcsComponentFactoryKind.md +37 -0
  152. package/dist/docs/api/index/type-aliases/EcsWorldComponentSnapshot.md +26 -0
  153. package/dist/docs/api/index/type-aliases/EcsWorldStateSnapshotLike.md +25 -0
  154. package/dist/docs/api/index/type-aliases/HydrateWorldFromSnapshotResult.md +23 -0
  155. package/dist/docs/api/index/type-aliases/KeyboardKey.md +13 -0
  156. package/dist/docs/api/index/type-aliases/MouseButton.md +13 -0
  157. package/dist/docs/api/index/type-aliases/SelectionContext.md +31 -0
  158. package/dist/docs/api/index/variables/HYDRATABLE_ENTITY_KINDS.md +13 -0
  159. package/dist/docs/api/index/variables/KeyboardKeys.md +195 -0
  160. package/dist/docs/api/index.md +15 -0
  161. package/dist/docs/api/typedoc-sidebar.json +1 -0
  162. package/dist/docs/api/types/index.md +34 -0
  163. package/dist/docs/api/types/type-aliases/AssetInput.md +23 -0
  164. package/dist/docs/api/types/type-aliases/CheckboxInput.md +13 -0
  165. package/dist/docs/api/types/type-aliases/ColorInput.md +13 -0
  166. package/dist/docs/api/types/type-aliases/ComponentInput.md +52 -0
  167. package/dist/docs/api/types/type-aliases/ComponentKind.md +37 -0
  168. package/dist/docs/api/types/type-aliases/DropdownInput.md +23 -0
  169. package/dist/docs/api/types/type-aliases/DropdownOption.md +23 -0
  170. package/dist/docs/api/types/type-aliases/EcsEntityEditorKind.md +15 -0
  171. package/dist/docs/api/types/type-aliases/EcsEntityKind.md +35 -0
  172. package/dist/docs/api/types/type-aliases/EntityId.md +16 -0
  173. package/dist/docs/api/types/type-aliases/EntityInput.md +23 -0
  174. package/dist/docs/api/types/type-aliases/FloatInput.md +13 -0
  175. package/dist/docs/api/types/type-aliases/IntersectionResult.md +29 -0
  176. package/dist/docs/api/types/type-aliases/ParentLookup.md +26 -0
  177. package/dist/docs/api/types/type-aliases/SelectionListener.md +25 -0
  178. package/dist/docs/api/types/type-aliases/SliderInput.md +27 -0
  179. package/dist/docs/api/types/type-aliases/TextInput.md +13 -0
  180. package/dist/docs/api/types/type-aliases/ToggleInput.md +13 -0
  181. package/dist/docs/api/types/type-aliases/Vec3.md +23 -0
  182. package/dist/docs/api/types/type-aliases/Vector2Input.md +23 -0
  183. package/dist/docs/api/types/type-aliases/Vector3Input.md +25 -0
  184. package/dist/docs/api/types/type-aliases/WorldEntityView.md +17 -0
  185. package/dist/docs/guide/accessing-components.md +399 -0
  186. package/dist/docs/guide/authoring-a-behaviour.md +166 -0
  187. package/dist/docs/guide/behaviour-lifecycle.md +43 -0
  188. package/dist/docs/guide/component-catalog.md +59 -0
  189. package/dist/docs/guide/components/_sidebar.json +78 -0
  190. package/dist/docs/guide/components/animation.md +171 -0
  191. package/dist/docs/guide/components/audio.md +181 -0
  192. package/dist/docs/guide/components/camera.md +179 -0
  193. package/dist/docs/guide/components/entity-type.md +141 -0
  194. package/dist/docs/guide/components/image-target-anchor.md +103 -0
  195. package/dist/docs/guide/components/image-target.md +122 -0
  196. package/dist/docs/guide/components/image.md +146 -0
  197. package/dist/docs/guide/components/light.md +157 -0
  198. package/dist/docs/guide/components/material.md +161 -0
  199. package/dist/docs/guide/components/mesh-geometry.md +153 -0
  200. package/dist/docs/guide/components/mesh.md +151 -0
  201. package/dist/docs/guide/components/model.md +96 -0
  202. package/dist/docs/guide/components/name.md +121 -0
  203. package/dist/docs/guide/components/object3d-ref.md +115 -0
  204. package/dist/docs/guide/components/parent-id.md +108 -0
  205. package/dist/docs/guide/components/physics.md +163 -0
  206. package/dist/docs/guide/components/script.md +142 -0
  207. package/dist/docs/guide/components/sprite.md +155 -0
  208. package/dist/docs/guide/components/transform.md +155 -0
  209. package/dist/docs/guide/components/video.md +153 -0
  210. package/dist/docs/guide/concepts.md +34 -0
  211. package/dist/docs/guide/getting-started/creating-objects.md +50 -0
  212. package/dist/docs/guide/getting-started/editing-objects.md +62 -0
  213. package/dist/docs/guide/getting-started/editor/assets-browser.md +55 -0
  214. package/dist/docs/guide/getting-started/editor/hierarchy.md +47 -0
  215. package/dist/docs/guide/getting-started/editor/index.md +16 -0
  216. package/dist/docs/guide/getting-started/editor/inspector.md +36 -0
  217. package/dist/docs/guide/getting-started/editor/modules.md +35 -0
  218. package/dist/docs/guide/getting-started/editor/scene-inspector.md +64 -0
  219. package/dist/docs/guide/getting-started/editor/toolbar.md +39 -0
  220. package/dist/docs/guide/getting-started/editor/viewport.md +43 -0
  221. package/dist/docs/guide/getting-started/first-launch.md +17 -0
  222. package/dist/docs/guide/getting-started/index.md +37 -0
  223. package/dist/docs/guide/getting-started/installation.md +59 -0
  224. package/dist/docs/guide/getting-started/preview-and-test.md +55 -0
  225. package/dist/docs/guide/getting-started/project-types/3d.md +30 -0
  226. package/dist/docs/guide/getting-started/project-types/ar.md +6 -0
  227. package/dist/docs/guide/getting-started/project-types/face-tracking.md +6 -0
  228. package/dist/docs/guide/getting-started/project-types/image-tracking.md +42 -0
  229. package/dist/docs/guide/getting-started/project-types/index.md +25 -0
  230. package/dist/docs/guide/getting-started/project-types/vr.md +6 -0
  231. package/dist/docs/guide/getting-started/projects.md +53 -0
  232. package/dist/docs/guide/getting-started/shortcuts.md +43 -0
  233. package/dist/docs/guide/inspector-data-binding.md +367 -0
  234. package/dist/docs/guide/reading-input.md +202 -0
  235. package/dist/docs/guide/scene/environment.md +101 -0
  236. package/dist/docs/guide/scene/index.md +36 -0
  237. package/dist/docs/guide/scene/postprocessing.md +108 -0
  238. package/dist/docs/guide/spawning/ambient-light.md +28 -0
  239. package/dist/docs/guide/spawning/area-light.md +32 -0
  240. package/dist/docs/guide/spawning/audio.md +42 -0
  241. package/dist/docs/guide/spawning/camera.md +50 -0
  242. package/dist/docs/guide/spawning/capsule.md +29 -0
  243. package/dist/docs/guide/spawning/cube.md +31 -0
  244. package/dist/docs/guide/spawning/cylinder.md +29 -0
  245. package/dist/docs/guide/spawning/directional-light.md +32 -0
  246. package/dist/docs/guide/spawning/empty.md +31 -0
  247. package/dist/docs/guide/spawning/image-target.md +48 -0
  248. package/dist/docs/guide/spawning/image.md +33 -0
  249. package/dist/docs/guide/spawning/index.md +79 -0
  250. package/dist/docs/guide/spawning/model.md +31 -0
  251. package/dist/docs/guide/spawning/plane.md +31 -0
  252. package/dist/docs/guide/spawning/point-light.md +32 -0
  253. package/dist/docs/guide/spawning/sphere.md +29 -0
  254. package/dist/docs/guide/spawning/spot-light.md +32 -0
  255. package/dist/docs/guide/spawning/sprite.md +31 -0
  256. package/dist/docs/guide/spawning/video.md +53 -0
  257. package/dist/docs/guide/system-overview.md +73 -0
  258. package/dist/docs/guide/systems/_sidebar.json +66 -0
  259. package/dist/docs/guide/systems/animation-system.md +32 -0
  260. package/dist/docs/guide/systems/audio-system.md +28 -0
  261. package/dist/docs/guide/systems/camera-sync-system.md +31 -0
  262. package/dist/docs/guide/systems/environment-sync-system.md +31 -0
  263. package/dist/docs/guide/systems/input-system.md +217 -0
  264. package/dist/docs/guide/systems/light-sync-system.md +29 -0
  265. package/dist/docs/guide/systems/material-sync-system.md +32 -0
  266. package/dist/docs/guide/systems/mesh-geometry-system.md +40 -0
  267. package/dist/docs/guide/systems/object-management-system.md +38 -0
  268. package/dist/docs/guide/systems/object-visibility-system.md +26 -0
  269. package/dist/docs/guide/systems/physics-sync-system.md +56 -0
  270. package/dist/docs/guide/systems/postprocessing-sync-system.md +43 -0
  271. package/dist/docs/guide/systems/render-system.md +22 -0
  272. package/dist/docs/guide/systems/script-behaviour-system.md +59 -0
  273. package/dist/docs/guide/systems/transform-sync-system.md +29 -0
  274. package/dist/docs/guide/systems/video-system.md +30 -0
  275. package/dist/docs/guide/world-api.md +405 -0
  276. package/dist/factories/index.cjs +3077 -0
  277. package/dist/factories/index.cjs.map +1 -0
  278. package/dist/factories/index.d.cts +69 -0
  279. package/dist/factories/index.d.ts +69 -0
  280. package/dist/factories/index.js +6 -0
  281. package/dist/factories/index.js.map +1 -0
  282. package/dist/index-B4-YyUNR.d.cts +73 -0
  283. package/dist/index-BZUOKeTO.d.ts +73 -0
  284. package/dist/index.cjs +8584 -0
  285. package/dist/index.cjs.map +1 -0
  286. package/dist/index.d.cts +283 -0
  287. package/dist/index.d.ts +283 -0
  288. package/dist/index.js +1729 -0
  289. package/dist/index.js.map +1 -0
  290. package/dist/systems/index.cjs +5119 -0
  291. package/dist/systems/index.cjs.map +1 -0
  292. package/dist/systems/index.d.cts +200 -0
  293. package/dist/systems/index.d.ts +200 -0
  294. package/dist/systems/index.js +6 -0
  295. package/dist/systems/index.js.map +1 -0
  296. package/dist/types.cjs +4 -0
  297. package/dist/types.cjs.map +1 -0
  298. package/dist/types.d.cts +3 -0
  299. package/dist/types.d.ts +3 -0
  300. package/dist/types.js +3 -0
  301. package/dist/types.js.map +1 -0
  302. package/dist/worldSnapshotUtils.cjs +259 -0
  303. package/dist/worldSnapshotUtils.cjs.map +1 -0
  304. package/dist/worldSnapshotUtils.d.cts +3 -0
  305. package/dist/worldSnapshotUtils.d.ts +3 -0
  306. package/dist/worldSnapshotUtils.js +4 -0
  307. package/dist/worldSnapshotUtils.js.map +1 -0
  308. package/package.json +80 -0
@@ -0,0 +1,64 @@
1
+ # Scene Inspector
2
+
3
+ The **Scene** tab in the inspector panel exposes scene wide singleton components settings that apply globally to the entire project rather than to a specific entity.
4
+
5
+ ## Opening the Scene tab
6
+
7
+ Click the **Scene** tab at the top of the inspector (right panel). The Object tab shows the selected entity's components; the Scene tab always shows the same global settings regardless of selection.
8
+
9
+ ![Scene Inspector](/images/getting-started/editor/scene-inspector.gif)
10
+
11
+ ## Sections
12
+
13
+ ### Skybox
14
+
15
+ Controls the background and ambient lighting of the scene.
16
+
17
+ | Field | Description |
18
+ | --- | --- |
19
+ | **Mode** | `Gradient`, `Color`, or `Image`. |
20
+ | **Top color / Bottom color** | Gradient stops (gradient mode). |
21
+ | **Color** | Flat background color (color mode). |
22
+ | **Intensity** | Ambient light contribution from the skybox. |
23
+
24
+ <!-- | **Image** | HDR or equirectangular image path (image mode). | -->
25
+
26
+ ### Fog
27
+
28
+
29
+ Adds atmospheric depth by fading distant objects toward a fog color.
30
+
31
+ | Field | Description |
32
+ | --- | --- |
33
+ | **Enabled** | Toggle fog on or off. |
34
+ | **Type** | `Linear` or `Exponential`. |
35
+ | **Color** | Fog blend color. |
36
+ | **Near / Far** | Start and end distances (linear mode). |
37
+ | **Density** | Fog density exponent (exponential mode). |
38
+
39
+ ### Gravity
40
+
41
+ Sets the global physics gravity vector applied to all dynamic rigidbodies.
42
+
43
+ | Field | Description |
44
+ | --- | --- |
45
+ | **X / Y / Z** | Gravity direction and magnitude (m/s²). Default is `(0, -9.81, 0)`. |
46
+
47
+ ### Postprocessing
48
+
49
+ Adds full-screen visual effects on top of the rendered frame.
50
+
51
+ | Effect | Description |
52
+ | --- | --- |
53
+ | **Bloom** | Glowing halo around bright areas. |
54
+ | **Depth of field** | Lens blur at a configurable focal distance. |
55
+ | **Vignette** | Darkened corners. |
56
+ | **Color grading** | Brightness, contrast, and saturation adjustments. |
57
+
58
+ See [Scene → Postprocessing](../../scene/postprocessing) for field-level details.
59
+
60
+ ## Related
61
+
62
+ - [Inspector](./inspector)
63
+ - [Scene → Environment](../../scene/environment)
64
+ - [Scene → Postprocessing](../../scene/postprocessing)
@@ -0,0 +1,39 @@
1
+ # Toolbar
2
+
3
+ The toolbar is the global header at the top of the editor window. It groups project-level actions on the left, viewport controls in the center, and history / publishing actions on the right.
4
+
5
+ ![Toolbar with Settings, Report, transform tools, preview, save and publish.](/images/getting-started/editor/toolbar.png)
6
+
7
+ ## Left group — project
8
+
9
+ | Control | Action |
10
+ | --- | --- |
11
+ | ![Logo](/images/getting-started/editor/toolbar/logo.png) | Relu Spatial logo. Clicking this returns to the project dashboard. |
12
+ | ![Shortcuts](/images/getting-started/editor/toolbar/shortcuts.png) | Opens the shortcuts modal (shows various keyboard shortcuts). |
13
+ | ![Report](/images/getting-started/editor/toolbar/report.png) | Opens the in-app issue reporter. |
14
+
15
+ ## Center group — scene & preview
16
+
17
+ | Control | Action |
18
+ | --- | --- |
19
+ | ![Transform tools](/images/getting-started/editor/toolbar/transform-tools.png) | Active manipulation mode (move / rotate / scale). Mirrors the gizmo shown on the selected entity. |
20
+ | ![Add object](/images/getting-started/editor/toolbar/add-object.png) | Adds a new entity to the scene (cube, sphere, plane, light, camera, etc.). |
21
+ | ![Preview](/images/getting-started/editor/toolbar/preview.png) | Launches the **preview runtime** in a separate window using the current saved snapshot. |
22
+
23
+ ## Right group — history & publishing
24
+
25
+ | Control | Action |
26
+ | --- | --- |
27
+ | ![Undo](/images/getting-started/editor/toolbar/undo.png) | Reverts the last scene-affecting action. Bound to `Cmd/Ctrl + Z`. |
28
+ | ![Redo](/images/getting-started/editor/toolbar/redo.png) | Re-applies the last undone action. Bound to `Cmd/Ctrl + Shift + Z`. |
29
+ | ![Save](/images/getting-started/editor/toolbar/save.png) | Writes the current scene to disk. Bound to `Cmd/Ctrl + S`. |
30
+ | ![Publish](/images/getting-started/editor/toolbar/publish.png) | Uploads the project to Relu and makes it shareable. |
31
+ | ![Help](/images/getting-started/editor/toolbar/help.png) | Opens the in-app tour and links to this documentation. |
32
+
33
+ > [!TIP]
34
+ > Save and Publish are independent. You always need to **save** before previewing or publishing — preview/publish read the on-disk snapshot, not the in-memory state.
35
+
36
+ ## Related
37
+
38
+ - [Keyboard shortcuts](../shortcuts)
39
+ - [Viewport](./viewport)
@@ -0,0 +1,43 @@
1
+ # Viewport
2
+
3
+ The viewport is the central live 3D view of your scene. You navigate the editor camera with the mouse and keyboard, and you transform entities with on-screen gizmos.
4
+
5
+ ![Viewport](/images/getting-started/editor/viewport.png)
6
+
7
+ ## Camera navigation
8
+
9
+ | Input | Action |
10
+ | --- | --- |
11
+ | **Left mouse drag** | Orbit (look around). |
12
+ | **Shift + Left mouse drag** | Pan. |
13
+ | **Mouse wheel** | Zoom in / out. |
14
+ | **`F`** | Focus on the selected entity. |
15
+
16
+ The bottom-left **axis gizmo** shows the current orientation of the editor camera. Click an axis to snap the view to that direction.
17
+
18
+ ## Selecting
19
+
20
+ - **Left-click** an object to select it.
21
+ - **Click empty space** to deselect.
22
+ - **`Esc`** also deselects.
23
+
24
+ ## Transform gizmos
25
+
26
+ When an entity is selected, a gizmo appears at its origin. Switch the active mode from the [top bar](./toolbar) or with the keyboard:
27
+
28
+ | Key | Mode |
29
+ | --- | --- |
30
+ | **`W`** | Move (translate) — _disabled while flying with right mouse held._ |
31
+ | **`E`** | Rotate. |
32
+ | **`R`** | Scale. |
33
+
34
+ Drag a colored arrow / ring / handle to constrain the operation to that axis. Hold **`Shift`** while dragging to enable snapping.
35
+
36
+ <!-- ## Editor-only helpers
37
+
38
+ Some helpers are visible only while editing — wireframe colliders, light cones, camera frustums. They are tagged internally with `userData.ecsHelper` and are stripped from preview and publish builds, so they never affect runtime rendering. -->
39
+
40
+ ## Related
41
+
42
+ - [Top bar](./toolbar) — transform tool buttons.
43
+ - [Keyboard shortcuts](../shortcuts) — the full list.
@@ -0,0 +1,17 @@
1
+ # Launching the Editor for the First Time
2
+
3
+ When you start Relu Spatial for the first time you will be prompted to sign in or create an account. Authentication uses your default web browser so the flow is the same as the web dashboard.
4
+
5
+ ## Sign in or sign up
6
+
7
+ Click **Sign in** or **Sign up** on the welcome screen. Your default browser opens, you complete the flow there, and the browser redirects you back into the editor signed in.
8
+
9
+ ![Editor welcome screen — Sign in / Sign up](/images/getting-started/signin.png)
10
+
11
+ ## After signing in
12
+
13
+ Once authentication succeeds, the editor opens the **Projects dashboard**. Before you can create or open a project, you must pick where projects live on disk see the next page.
14
+
15
+ ## Next
16
+
17
+ - [Projects: choose a default folder and create or open a project](./projects)
@@ -0,0 +1,37 @@
1
+ # Introduction
2
+
3
+ **Relu Spatial** is a desktop first 3D editor and runtime for building interactive AR / VR / spatial experiences. It combines a visual scene editor with a TypeScript scripting API powered by an entity component system (ECS) runtime, so you can author scenes visually and drive them with code that runs the same way in preview and in production.
4
+
5
+ You compose scenes from entities, meshes, lights, cameras, image targets, and custom prefabs and you bring them to life with `Behaviour` scripts that read input, query the world, and mutate components every frame.
6
+
7
+ ![Full editor window — hierarchy, viewport, inspector, asset browser, and toolbar](/images/getting-started/editor-overview.png)
8
+
9
+ ## What you can build
10
+
11
+ - **Image-tracking** experiences that anchor 3D content to printed images.
12
+ - **Face-tracking** filters that follow facial features.
13
+ - **3D**, and **VR / AR** scenes.
14
+ - Standalone web deployable spatial scenes.
15
+
16
+ ## How the pieces fit together
17
+
18
+ | Layer | What it does |
19
+ | --- | --- |
20
+ | **Editor** | Desktop application where you author scenes, import assets, and configure components. |
21
+ | **Runtime** (npm package `@relu-interactives/spatial-ecs`) | The ECS engine that powers both the editor's preview and your published builds. |
22
+ | **Behaviours** | Your TypeScript scripts attached to entities, dispatched every frame by the runtime. |
23
+
24
+ <!-- ## Where to next -->
25
+
26
+ <!-- Continue with the rest of this guide in order:
27
+
28
+ 1. [Installation](./installation) — download the editor and check requirements.
29
+ 2. [Launching the editor for the first time](./first-launch) — sign up or log in.
30
+ 3. [Projects](./projects) — pick a default folder, create or open a project.
31
+ 4. [Project types](./project-types/) — choose the right project for your experience.
32
+ 5. [Understanding the editor](./editor/) — hierarchy, toolbar, inspector, asset browser, environment view.
33
+ 6. [Creating objects](./creating-objects) — add entities to your scene.
34
+ 7. [Editing inspector values](./editing-objects) — tune transforms, materials, lights, scripts.
35
+ 8. [Preview and test](./preview-and-test) — run your project in the runtime preview. -->
36
+ <!--
37
+ After Getting Started, dive into [Concepts](../concepts), [Custom Behaviours](../authoring-a-behaviour), and the [Component Catalog](../component-catalog). -->
@@ -0,0 +1,59 @@
1
+ # Installation
2
+
3
+ The Relu Spatial editor is distributed as a desktop application for macOS, Windows, and Linux.
4
+
5
+ ## Download
6
+
7
+ Get the latest installer from the official downloads page:
8
+
9
+ [**reluspatial.com/downloads**](https://reluspatial.com/downloads)
10
+
11
+ ![Download Page Image](/images/getting-started/installation/download-page.png)
12
+
13
+ ## System requirements
14
+
15
+ | Requirement | Minimum | Recommended |
16
+ | --- | --- | --- |
17
+ | OS | macOS 12, Windows 10, Ubuntu 22.04 | macOS 14+, Windows 11, Ubuntu 24.04 |
18
+ | CPU | 4-core x64 / Apple Silicon | 8-core x64 / Apple Silicon (M2 or newer) |
19
+ | RAM | 8 GB | 16 GB+ |
20
+ | GPU | WebGL2-capable, 1 GB VRAM | Dedicated GPU with 4 GB+ VRAM |
21
+ | Storage | 2 GB free | 10 GB+ free for asset-heavy projects |
22
+ | Display | 1440 × 900 | 1920 × 1080 or higher |
23
+
24
+ > [!IMPORTANT]
25
+ > The editor uses GPU-accelerated rendering for the viewport and image-target compilation. Integrated graphics work for simple scenes but are noticeably slower on large models or postprocessing-heavy environments.
26
+
27
+ ## Platform-specific notes
28
+
29
+ ### macOS
30
+
31
+ 1. Open the downloaded `.dmg`.
32
+ 2. Drag **Relu Spatial** into your `Applications` folder.
33
+ 3. The first launch prompts macOS Gatekeeper open **System Settings → Privacy & Security** and click **Open Anyway** if needed.
34
+
35
+ ![Macos Installation](/images/getting-started/installation/install-macos.png)
36
+
37
+
38
+ ### Windows
39
+
40
+ 1. Run the downloaded `.exe` installer.
41
+ 2. Follow the wizard to choose an install location.
42
+ 3. Allow Relu Spatial through Windows SmartScreen on first launch if prompted.
43
+
44
+ ![Windows Installation](/images/getting-started/installation/install-windows.png)
45
+
46
+ <!-- ### Linux
47
+
48
+ 1. Download the `.AppImage` (or `.deb` / `.rpm` if provided).
49
+ 2. Make it executable: `chmod +x ReluSpatial-*.AppImage`.
50
+ 3. Double-click or run from a terminal.
51
+
52
+ ::: info Screenshot placeholder
53
+ Linux AppImage launching.
54
+ _Image: `images/getting-started/install-linux.png`_
55
+ ::: -->
56
+
57
+ ## Next
58
+
59
+ Once installed, continue to [Launching the editor for the first time](./first-launch).
@@ -0,0 +1,55 @@
1
+ # Preview and Test
2
+
3
+ The editor ships with a runtime preview so you can test your scene without leaving the desktop app. Preview runs the same `@relu-interactives/spatial-ecs` engine that powers your published builds, so what you see is what users will get.
4
+
5
+ ## Starting a preview
6
+
7
+ Click the **Preview** button in the [toolbar](./editor/toolbar). The editor saves the current scene, spins up a local runtime server, and opens a preview window.
8
+
9
+ ![Previewing scene](/images/getting-started/preview-and-test/preview.gif)
10
+
11
+ ## What runs in preview
12
+
13
+ - All systems from the runtime including animation, physics, scripts, rendering.
14
+ - Every `Behaviour` script you've authored, compiled in real time.
15
+ - Project type specific runtimes (image tracking, face tracking, WebXR sessions where applicable).
16
+
17
+ ## Stopping a preview
18
+
19
+ Click **Preview** again (it switches to **Stop preview**). The editor returns to authoring mode and the runtime server shuts down.
20
+
21
+ ## Hot-reload caveats
22
+
23
+ Preview is **not** a live link to the editor. To see changes:
24
+
25
+ 1. Edit in the editor.
26
+ 2. **Save** the project (⌘S / Ctrl+S).
27
+ 3. **Restart preview**.
28
+
29
+ > [!TIP]
30
+ > Most preview iteration is fastest by keeping the preview window visible alongside the editor and restarting it after each significant change.
31
+
32
+ ## Testing on devices
33
+
34
+ For project types that need real device sensors (image tracking, face tracking, AR, VR) the desktop preview only goes so far. Use these strategies:
35
+
36
+ - **Image / face tracking:** desktop preview can use your laptop camera. For phone camera quality, publish a draft build and open it on the target device.
37
+ - **WebXR (AR / VR):** publish a draft and open it on a headset or AR capable phone over your local network or via a tunnel like [ngrok](https://ngrok.com).
38
+
39
+ ## Common preview issues
40
+
41
+ | Symptom | Likely cause |
42
+ | --- | --- |
43
+ | Preview button does nothing | Save failed check for unsaved errors or read-only project folder. |
44
+ | Black viewport | No camera in scene, or camera's clear color matches scene fog. |
45
+ | Scripts don't run | Compile error check the editor footer for compile output. |
46
+ | Image targets don't track | Targets weren't recompiled after upload. Open the compile modal and re-run. |
47
+
48
+ ## Next
49
+
50
+ You're done with **Getting Started**. Continue with:
51
+
52
+ - [Concepts](../concepts) — how the ECS runtime is organized.
53
+ - [Custom Behaviours](../authoring-a-behaviour) — write scripts.
54
+ - [Component Catalog](../component-catalog) — full component reference.
55
+ - [World API](../world-api) — query and mutate the runtime from scripts.
@@ -0,0 +1,30 @@
1
+ # 3D
2
+
3
+ A **3D** project is a plain interactive 3D scene without any tracking or immersive session. It renders into a regular canvas perfect for games, product viewers, configurators, embedded scenes, dashboards, and any web-deployable 3D experience.
4
+
5
+ ![3D project preview showing an interactive scene rendered in the viewport.](/images/getting-started/project-types/3d/3d.gif)
6
+
7
+ ## What's different in this project type
8
+
9
+ - The default scene includes a **perspective camera** with orbit controls and basic lighting.
10
+ - The runtime renders into a standard canvas with no WebXR session, no device camera, no tracker bootstrap.
11
+ - Postprocessing is available; tracking-related panels (image targets, face anchors, hit-test) are hidden.
12
+ - Output is suited for embedding on the web or shipping inside another app.
13
+
14
+ ## Workflow
15
+
16
+ 1. **Add scene content:** meshes, models, lights, cameras.
17
+ 2. **Tune the environment:** skybox, fog, lighting (see [Scene Inspector](../editor/scene-inspector)).
18
+ 3. **Wire up scripts:** pointer interactions, animations, UI logic via `Behaviour` scripts.
19
+ 4. **Preview:** runs in the editor's preview window using a standard 3D camera rig.
20
+
21
+ ## Tips
22
+
23
+ - Pick this type when you want a 3D experience without AR/VR overhead.
24
+ - Combine with orbit / pan / zoom behaviours for product-viewer use cases.
25
+ - Postprocessing has a runtime cost — disable it for low-end targets.
26
+
27
+ ## Related
28
+
29
+ - [Custom Behaviours](../../authoring-a-behaviour) — interactive scripts.
30
+ - [Component Catalog](../../component-catalog).
@@ -0,0 +1,6 @@
1
+ # AR
2
+
3
+ ::: warning Coming Soon
4
+ AR (world-space augmented reality) project support is planned for a future release. Documentation will be published when the feature is available.
5
+ :::
6
+
@@ -0,0 +1,6 @@
1
+ # Face Tracking
2
+
3
+ ::: warning Coming Soon
4
+ Face Tracking project support is planned for a future release. Documentation will be published when the feature is available.
5
+ :::
6
+
@@ -0,0 +1,42 @@
1
+ # Image Tracking
2
+
3
+ An **Image Tracking** project anchors 3D content to a printed or on-screen image. When the runtime detects a registered image target through the camera, it places the matching anchor entity at that target's position and orientation.
4
+
5
+ Use this for posters, business cards, product packaging, museum exhibits, and any AR experience tied to a printed surface.
6
+
7
+ ![Image Tracking Example Preview](/images/getting-started/project-types/image-tracking/image-tracking.gif)
8
+
9
+
10
+
11
+ ## What's different in this project type
12
+
13
+ When you open an image-tracking project, the editor changes in three ways:
14
+
15
+ 1. **Image targets are first-class entities** in the hierarchy. Each anchor represents one image and contains the children that should appear when that image is detected.
16
+ 2. **A floating Compile Targets button** appears in the viewport overlay. It opens the **image compilation modal** which packages your image targets into a binary the runtime can load.
17
+ 3. **The Image Targets panel** lives in the inspector when an image-target entity is selected. From there you upload reference images, set physical sizes, and preview tracking quality.
18
+
19
+ ![Image Target Compile Modal](/images/getting-started/project-types/image-tracking/image-tracking-compile-modal.gif)
20
+
21
+ ## Workflow
22
+
23
+ 1. **Add an Image Target entity** from the toolbar `+` menu (or hierarchy panel). The editor creates an image-target anchor at the scene root.
24
+ 2. **Select the anchor** and use the **Image Targets panel** in the inspector to upload one or more reference images. For each, set its real-world physical width.
25
+ 3. **Add child entities** under the anchor. Anything you parent to it becomes visible only when that image is detected.
26
+ 4. **Compile targets** — click the floating **Compile Targets** button in the viewport. The compilation modal runs through tracker quality analysis and writes the compiled binary into `bin/targets/`.
27
+ 5. **Preview** — press the preview button. The runtime loads the compiled targets and starts the device camera.
28
+
29
+ ![Image Target Panel](/images/getting-started/project-types/image-tracking/image-tracking-panel.gif)
30
+
31
+
32
+ ## Tips
33
+
34
+ - High-contrast, feature-rich images track best. Photos of faces, gradients, and large flat colors are weak targets.
35
+ - Keep the **physical size** field accurate — this is what the runtime uses to scale your 3D content to the printed image.
36
+ - Children of an image-target anchor inherit its transform. Position objects in **local space** relative to the anchor, not world space.
37
+ - Recompile targets whenever you add or change reference images.
38
+
39
+ ## Related
40
+
41
+ - [Component Catalog → Image Target](../../component-catalog) — runtime component reference.
42
+ - [Spawning → Image Target](../../spawning/image-target) — spawning anchors from scripts.
@@ -0,0 +1,25 @@
1
+ # Project Types
2
+
3
+ When you create a new project the editor asks for a **project type**. The type determines:
4
+
5
+ - the **default scene** seeded into the project,
6
+ - which **components and panels** are available in the inspector,
7
+ - how the **runtime** initializes the camera, tracking, and rendering pipeline,
8
+ - which **publish targets** are valid.
9
+
10
+ You can't change a project's type after creation, so pick the one that matches the experience you intend to ship.
11
+
12
+ ## Available project types
13
+
14
+ | Type | Best for |
15
+ | --- | --- |
16
+ | [Image Tracking](./image-tracking) | AR experiences anchored to printed images, posters, or product packaging. |
17
+ | [3D](./3d) | Plain interactive 3D scenes, games, product viewers, configurators, embedded experiences. |
18
+ | [Face Tracking](./face-tracking) | Face filters, avatars, and try-on experiences. *(Coming Soon)* |
19
+ | [VR](./vr) | Fully immersive virtual reality scenes for headsets. *(Coming Soon)* |
20
+ | [AR](./ar) | World-space augmented reality without a specific anchor. *(Coming Soon)* |
21
+
22
+ ![Project Types.](/images/getting-started/projects-new-dialog.png)
23
+
24
+ > [!TIP]
25
+ > If you're not sure, start with **3D** — it has the simplest scene setup with no tracking or device requirements. You can always create a second project to try a tracking-based or immersive type.
@@ -0,0 +1,6 @@
1
+ # VR
2
+
3
+ ::: warning Coming Soon
4
+ VR (immersive virtual reality) project support is planned for a future release. Documentation will be published when the feature is available.
5
+ :::
6
+
@@ -0,0 +1,53 @@
1
+ # Projects
2
+
3
+ After signing in for the first time, the editor needs to know where to store your projects on disk. From the dashboard you can then create new projects or open existing ones.
4
+
5
+ ## Choose a default projects folder
6
+
7
+ The first time you open the dashboard you'll see a prompt to pick a **projects folder**. This is the directory where every project you create or open lives.
8
+
9
+ ![Dashboard prompt asking the user to select a projects folder.](/images/getting-started/projects-folder-prompt.png)
10
+
11
+ ![Dashboard prompt asking the user to select a projects folder.](/images/getting-started/projects-folder-selection.png)
12
+
13
+ 1. Click **Select folder**.
14
+ 2. Pick a location in your file system: for example `~/Documents/ReluSpatial` on macOS / Linux, or `Documents\ReluSpatial` on Windows.
15
+ 3. The editor remembers this path for every future session.
16
+
17
+ You can change it later from **Settings → Projects path**.
18
+
19
+ ## Project files on disk
20
+
21
+ Each project is a folder under your projects path.
22
+
23
+ > [!TIP]
24
+ > The `assets/` folder is yours to organize. Drop models, images, audio, video, and scripts in here directly they appear in the editor's [asset browser](./editor/assets-browser) automatically.
25
+
26
+ ## Create a new project
27
+
28
+ From the dashboard, click **New project**.
29
+
30
+ ![New project Dialog.](/images/getting-started/projects-new-dialog.png)
31
+
32
+
33
+ You'll be asked for:
34
+
35
+ - **Project name:** used to derive the folder slug.
36
+ - **Project type:** see [Project types](./project-types/) for the differences.
37
+
38
+ Click **Create**. The editor scaffolds the project, opens it, and seeds the default scene for the chosen project type.
39
+
40
+ ## Open an existing project
41
+
42
+ The dashboard lists every project found in your projects folder.
43
+
44
+ ![Project List.](/images/getting-started/projects-list.png)
45
+
46
+
47
+ - **Click a card** to open the project in the editor.
48
+ - **Click card options:** for actions: rename, duplicate, reveal in finder/explorer, delete.
49
+
50
+ ## Next
51
+
52
+ - [Project types](./project-types/) — pick the right type for your experience.
53
+ - [Understanding the editor](./editor/) — what each region of the editor window does.
@@ -0,0 +1,43 @@
1
+ # Keyboard Shortcuts
2
+
3
+ The editor supports keyboard shortcuts for common actions. You can also open the shortcuts panel at any time by clicking the **keyboard icon** in the top-right corner of the navbar (next to the logo).
4
+
5
+ ## Navigation
6
+
7
+ | Shortcut | Action |
8
+ | --- | --- |
9
+ | `F` | Focus camera on selected object |
10
+ | `Shift+F` | Frame selected object (zoom to fit) |
11
+
12
+ ## Transform Gizmos
13
+
14
+ | Shortcut | Action |
15
+ | --- | --- |
16
+ | `W` | Switch to **Translate** gizmo |
17
+ | `E` | Switch to **Scale** gizmo |
18
+ | `R` | Switch to **Rotate** gizmo |
19
+
20
+ ## Selection
21
+
22
+ | Shortcut | Action |
23
+ | --- | --- |
24
+ | `Esc` | Clear active selection |
25
+ | `Del` / `Backspace` | Delete selected object |
26
+ | `⌘+D` / `Ctrl+D` | Duplicate selected object |
27
+
28
+ ## History
29
+
30
+ | Shortcut | Action |
31
+ | --- | --- |
32
+ | `⌘+Z` / `Ctrl+Z` | Undo last action |
33
+ | `⌘+Shift+Z` / `Ctrl+Y` | Redo last undone action |
34
+
35
+ ## Project
36
+
37
+ | Shortcut | Action |
38
+ | --- | --- |
39
+ | `⌘+S` / `Ctrl+S` | Save project |
40
+
41
+ ::: tip macOS vs Windows/Linux
42
+ Shortcuts that show `⌘` apply to macOS. Use `Ctrl` in their place on Windows.
43
+ :::