Skip to main content
Product: Molca VR SDK (Assets/_MolcaSDK/_VR/) on Molca Core. For cross-product Core placement, see Architecture. For content structure (modules → scenario → simulation vs tour), see VR content hierarchy.

Layers (VR training on Molca Core)

Dependency direction: your VR training content calls into the VR SDK; the VR SDK sits on Molca Core; both run on Unity + XR.

Glossary (VR training)

TermWhere it lives
ScenarioBaseScenarioDataSimulationScenarioData / TourScenarioData in Scenario/Data/
SimulationActivities + steps; optional time limit on SimulationScenarioData
TourAreas (often additive scenes), spots (TourSpotController), informational materials (not Unity materials)
ActivityScenarioActivitySequenceController + root Step list; ties to scoring/session
StepMolca.Sequence.Step — may nest children (ParallelStep, etc.); completes when self + children complete
Step auxiliaryStepAuxiliary list on Step (e.g. StepInfo titles for Scenario UI task lists, scoring, haptics, controller hints)
Mode driverIScenarioModeDriverSimulationScenarioModeDriver vs TourScenarioModeDriver

Scenario state (ScenarioManager)

ScenarioState: Inactive, Active, Paused, Completed, Terminated, TimedOut. FailScenario() sets Terminated. API comments note that success and failure can both end as a finished session from the backend’s perspective; pass/fail may depend on posted scores. Inspect CompleteScenario, FailScenario, and TimeoutScenario in Scenario/ScenarioManager.cs when customizing outcomes.

Typical VR app flow (molca-sdk-vr)

  1. PreloadVRPreloadCheck runs child components implementing IPreloadCheck (_MolcaSDK/Code/.../Preload/).
  2. AuthScenarioSessionManager.VisitorLoginAsync (6-digit OTP) or MemberLoginAsync(email, password). Avoid obsolete MemberLoginAsyncUsingClerk.
  3. HomeHomeUIManager + ScenarioDataConfig (and fetched org content when connected).
  4. ScenarioScenarioManager + mode driver; simulation uses activities/sequences; tour uses TourSubsystem.
  5. End — completion / timeout / fail UI + session status and scores via ScenarioNetworkConfig.

Scenario lifecycle states

ScenarioState on ScenarioManager (simplified — see source for guards): Pause UI: PauseScenario() / ResumeScenario() only show or hide the pause modal. CurrentState stays Active; sequences and timers keep running (see API comments in ScenarioManager.cs). The enum includes Paused, but that path is not used by the pause modal flow.

Connected session (high level)

VR entry-point cheat sheet

ConcernType
BootstrapRuntimeManager (_Core/Runtime/RuntimeManager.cs)
Project config assetMolcaProjectSettings
Module bagGlobalSettings + SettingModule (e.g. ScenarioDataConfig)
Scenario orchestrationScenarioManager, ScenarioActivity
Backend VR HTTPScenarioSessionManager, ScenarioNetworkConfig