9 GENERAL INFORMATION This README provides essential information about the "Baseline_System.zip"/"ISM-Enhanced_System.zip" Unity projects. Below you will find a description of the project's folder structure, the purpose of each folder, and instructions on how to open and use the project. FOLDER AND FILES STRUCTURE The "Baseline_System.zip"/"ISM-Enhanced_System.zip" project is streamlined to include only the essential folders required for development and collaboration. Below is an overview of these folders: A. Assets [Folder] This folder contains all project-specific assets, including scenes, scripts, materials, textures, and prefabs. This is the primary directory where development work occurs, as it houses the content you create or import for your project. Unity-generated .meta files: In Unity, every asset, scene, and essentially every file within the project is associated with a .meta file. These .meta files contain metadata such as unique identifiers (GUIDs), asset import settings, and references that ensure assets are correctly linked and behave as expected within the project. Within every sub-folder of the Assets folder, there are various .meta files, which can be viewed using any IDE or text editor. Both "Baseline_System.zip" and "ISM-Enhanced_System.zip" have the following folders: A1.Area Models [Folder]: It contains a set of 3d models in .obj format, which can be viewed and edited in CAD software like Solidworks or Rhino. These .obj files can also be viewed in some light-weight 3d modeling applications like paint 3D. A2.AreaIconSet [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an AreaIconSet.asset file, which is an icon set used in the Unity Editor. A3.Arrow Models [Folder]: It contains a set of 3d models in .obj format. A4.ArrowIconSet [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an ArrowIconSet.asset file, which is an icon set used in the Unity Editor. A5.Lego Models [Folder]: It contains a Coffee Machine [Folder] within which there are a set of 3d model in .obj format and a Water Dispenser [Folder] where there are 3d models in .obj format. A6.LegoBlockIconSet [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an LegoBlockIconSet.asset file, which is an icon set used in the Unity Editor. A7.MRTK [Folder]: It contains a Shader [Folder] which contains .shader files that are scripts defining how graphics are rendered. These .shader files can be opened in any IDE or text editor. A8.Materials [Folder]: It contains .mat files, which are material assets that controls the visual appearance of a game object's surface. These files should be edited in Unity Editor or viewed in any text editor. A9.MixedRealityToolkit.Generated [Folder]: It has a CustomProfiles [Folder] that stores .asset files, which define the configuration settings for camera and pointer in the application, and can be opened with any text editor. Also, this folder contains a MRTK.Generated.sentinel file that helps track changes and avoid unnecessary regeneration by MRTK, and a link.xml that helps to prevent MRTK code from being optimized away. A10.Prefabs [Folder]: It contains four subfolders, each containing various prefab files which store a configured game object, along with all its components, properties, and child game objects, as a reusable template. Outside the four subfolders there are individual prefab files. These prefab files should be edited in Unity Editor, but you can view these .prefab files using any text editor. A11.Samples [Folder]: It contains a Mixed Reality Toolkit Examples [Folder] within which there are demo unity scenes provided by MRTK 2.8.3 (open-source). These scenes can only be opened and edited in Unity Editor. A12.Scenes [Folder]: It contains a MainScene.unity file, which is the main scene of the game project. The .unity files should be edited within the Unity Editor, but you can view .unity files with any text editor. A13.Script [Folder]: It contains a set of C# scripts that control the behaviors of the game objects in the main scene, these scripts can be opened in any IDE or text editor. A14.StepButtonIconSet [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an StepButtonIconSet.asset file, which is an icon set used in the Unity Editor. A15.TextMesh Pro [Folder]: It contains a Documentation [Folder] within which you can find a TextMesh Pro User Guide 2016.pdf, and a Fonts [Folder] which includes font assets (LiberationSans.ttf) and its Open Font License (LiberationSans - OFL.txt), a Resources [Folder] which has multiple subfolders (Fonts & Materials [Folder], which includes font assets (.asset) and their associated materials (.mat) used by TextMesh Pro; Sprite Assets [Folder] which includes EmojiOne.asset, which allows for emojis to be included in text fields; Style Sheets [Folder], which includes Default Style Sheet.asset that are used to define and apply consistent text styling) and individual files including LineBreaking Following Characters.txt, LineBreaking Leading Characters.txt and TMP Settings.asset (used to stores global settings and configurations for TextMesh Pro), a Shader [Folder] that stores .shader files that are scripts defining how text are rendered, and a Sprite [Folder] that stores sprite assets for rendering emojis (EmojiOne Attribution.txt, EmojiOne.json and EmojiOne.png). A16.Video [Folder]: It contains two video tutorials for model assembly (Coffee Machine_8.04.mp4 and Practice.mp4). A17.XR [Folder]: It contains a Loaders [Folder] that has a Open XR Loader.asset (storing settings related to the OpenXR runtime loader), a Settings [Folder] that includes OpenXR Editor Settings.asset (storing configurations relevant to the Unity Editor environment) and OpenXR Package Settings.asset (storing settings and configurations for the OpenXR package), and a XRGeneralSettings.asset that stores general settings for the XR system in the project. Folders that only exist in "Baseline_System.zip": A18.Area sprite [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an AreaIconSet.asset file, which is an icon set used in the Unity Editor. A19.ArrowSprite [Folder]: It contains a Textures [Folder] within which there are a set of images in .png format and an ArrowIconSet.asset file, which is an icon set used in the Unity Editor. A20.Coffee machine [Folder]: It contains a set of images in .png format. A21.Water dispenser [Folder]: It contains a set of images in .png format. Folders that only exist in "ISM-Enhanced_System.zip": A22.ButtonClickSound [Folder]: It contains the sound files that play when a button is clicked and released (click.wav and release.wav) A23.Microsoft.SpatialAudio.Spatializer.Unity [Folder]: It contains a Plugins [Folder] which has the Unity plugin for spatial audio processing (AudioPluginMicrosoftSpatializer.dll) and a Scripts [Folder] that includes RoomEffectSendLevel.cs and RoomEffectSendLevelEditor.cs in the Editor sub[Folder]. These are C# scripts that could be opened in any text editor. Microsoft.SpatialAudio.Spatializer.Unity.nuspec stores metadata of the audio spatializer and can be viewed using any text editor. B. Packages [Folder] This folder holds all the Unity packages currently used in the project. This includes both Unity's official packages and any open-source third-party packages necessary for the project. B1.MixedReality [Folder]: It contains com.microsoft.mixedreality.openxr-1.8.0.tgz, an Unity package developed by Microsoft that support Mixed Reality development using the OpenXR framework, which is an open, royalty-free standard for virtual reality (VR) and augmented reality (AR) platforms. It also contains a set of MRTK packages including com.microsoft.mixedreality.toolkit.examples-2.8.3.tgz, com.microsoft.mixedreality.toolkit.extensions-2.8.3.tgz, com.microsoft.mixedreality.toolkit.foundation-2.8.3.tgz and com.microsoft.mixedreality.toolkit.standardassets-2.8.3.tgz. These packages are released under the MIT License that allows for free use, modification, and distribution of the software. B2:manifest.json: It keeps track of which packages are included in this project, and can be opened in any text editor. B3:packages-lock.json: It provides a snapshot of the exact versions of the packages that were installed at a specific point in time. B4:manifest.json.backup: A backup of the manifest.json file automatically generated by Unity. C. ProjectSettings [Folder] This folder Contains all the configuration files for project settings. This includes settings for aspects like physics, graphics, input, and player preferences. These settings are global and affect the entire project, ensuring that the project behaves consistently across different environments and platforms. C1.Packages/com.unity.testtools.codecoverage [Folder]: It contains Settings.json, which configures settings for the code coverage tool. C2.A set of individual .asset files that can be viewed using any text editor. OPENING AND USING THE PROJECT To get started with the "Baseline_System.zip"/"ISM-Enhanced_System.zip" Unity project, follow these simple steps: 1. Unzip "Baseline_System.zip"/"ISM-Enhanced_System.zip" into your chosen directory on your computer. 2. Open Unity Hub on your device. If Unity Hub is not yet installed, it can be downloaded from the Unity website. 3. Within Unity Hub, press the 'Open' button and navigate to the directory where you unzipped "Baseline_System.zip"/"ISM-Enhanced_System.zip". Select the directory to add it to your Projects list in Unity Hub. 4. This project was developed and saved using Unity Editor version 2021.3.15f1. To avoid compatibility issues, please ensure you have this specific version installed before proceeding. Find "Baseline_System"/"ISM-Enhanced_System" under the Projects tab in Unity Hub, and click it to open the project in the Unity Editor. If you do not have version 2021.3.15f1 installed, please visit the Unity download archive page (https://unity.com/releases/editor/archive) where you have the options to download and install all previous versions of the Unity Editor. 5. Once the project is open in the Unity Editor, go to the 'Assets' folder, select the main scene named "MainScene" and hold and drag "MainScene" to the hierarchy. If Unity auto-generated any new empty scene in the hierarchy, please right-click and remove the empty scene. 6. When using the "Baseline_System" project, an extra step is required to enable hand-dwell button selection. Firstly, select any button under "MixedRealitySceneContent" in the hierarchy, then go to the "DwellHandler" section in the "Inspector", and choose "Hand" for "Dwell Trigger Pointer Type". You can also adjust parameters like "Dwell Start Delay" in the same section. IMPORTANT NOTE ON MODIFYING PROJECT FILES In the "Assets", "Packages" and "ProjectSettings" folders, you might encounter various Unity-specific files, such as material files (.mat), scene files (.unity), and others. These files are designed to be modified within the Unity Editor and may generate errors if modifications are attempted through external software or without the proper context of the Unity project. To avoid this situation, please adhere to the following guidelines: 1. Unity Editor Requirement: Ensure that you modify all Unity-specific files within the folders directly within the Unity Editor. Unity Editor provides the necessary tools and interfaces for modifying these files as intended. 2. Project Context: Modifying asset files should be done within the context of the whole project. This ensures that all dependencies, settings, and references are correctly resolved and that the assets behave as expected within the project.