Activity Manager - WEKIT-ECS/MIRAGE-XR GitHub Wiki
New classes
Some of the tasks that this class currently has and which should all be separated into own classes:
ActivityModel
: renameActivity.cs
toActivityModel.cs
; this is the data model, already existsActivityLoader
: provide different access methods for loading from web or file no matter whether ARLEM zip or activity.jsonActivityParser
: Parse activity: Split this into the actual data parsing and into logic that applies data to the scene (ActivitySetup). One of the main things that makes this method problematic is that you cannot just parse the activity on a data level and, e.g., inspect in the code what it contains. By calling the current methodActivityParser()
, immediately everything changes in the scene, setting up all necessary GameObjects, manipulating the user interfaces, etc.ActivityView
: once the data model is parsed, the view receives the data translated by theActivitySceneManager
as gameobjectsActivitySceneSetup
: setup and arrange augmentations in the scene (may not be the perfect name yet!)WorkplaceController
: Control workplace manager (this requires refactoring the WorkplaceManager as well - doing the same split between WorkplaceParser, may require WorkplaceSetup and WorkplaceController/ WorkplaceRecorderController)WorkplaceLoader
: provide different access methods for loading from file (or other) the workplace.jsonWorkplaceParser
: parse the workplaceActivityController
:- Viewer: initialization; move back / next between action steps; resuming activities (
restoreState
); keeping track of the current action step; Handling the GameObject shifting to switch from one step to another ('Keep Alive') - Editing the activity: adding and removing activity steps; adding and removing augmentations for a step - or would we keep this with the ActivityController?
- Viewer: initialization; move back / next between action steps; resuming activities (
TODO refactoring:
- WorkplaceManager: LoadWorkplace() now triggers an event, but this still required to update in the WorkplaceViewUpdater.cs
- WorkplaceManager: CalibrateWorkplace now triggers an event, but the two original method calls to
PerformEditModeCalibration()
andPerformPlayModeCalibration()
still need to be fixed, and added to the WorkplaceController.cs - WorkplaceManager: InitContainers commented out, needs to move to a view / controller
- ActionEditor needs to listen to event EventManager.OnDisableAllPoiEditors and then do
Object.FindObjectOfType<ActionEditor>().DisableAllPoiEditors();
- ActionEditor: would need to implement OnShowUploadWarningPanel and OnShowCloneWarningPanel listeners to then call the ShowCloneWarningPanel and ShowUploadWarningPanel routines
Diagram
graph TD;
ActivityManager --> ActivityLoader;
ActivityManager --> ActivitySceneSetup;
ActivitySceneSetup --> ActivityView;
ActivityLoader --> ActivityParser;
ActivityParser --> ActivityModel;
ActivityManager --> ActivityViewerController;
ActivityManager --> ActivityEditorController;
ActivityController --> ActivityView;
ActivityController --> ActivityModel;
ActivityModel --> WorkplaceModel;
ActivityManager --> WorkplaceLoader;
WorkplaceLoader --> WorkplaceModel;