-
Notifications
You must be signed in to change notification settings - Fork 7
Project Architecture

The application was designed to be modular, event-driven, and follow a Model-View-Presenter structure.
The entire application is governed by:
- The Application State, which dictates the view mode the application is displaying, the current user interaction being executed, and triggers to change the application behavior.
- The History State, which dictates the timeline of changes in the instance's model, and the point in time in the timeline the application is currently in (affected by undo/redo).
The application is managed by a UIApplication that controls the launching of the application as well as principal cause-and-effect interactions between key components of the application.
The UIApplication maintains the Symbol Art model. Any changes in the main model will go through the UIApplication first.
The UIApplication maintains the views (UIViews and the WebGL Renderer), which act independently but communicate with the UIApplication for essential information from other modules.
The Renderer maintains all 3D views (View3Ds) and their state is managed by its internal presenter (RendererPresenter).
3D views are visual representations of their model counterparts. For instance, a Symbol3D is a visual representation of a Symbol model.
The views (UIViews) maintain all user interface elements displayed in the DOM. Some of these UIViews represent their model counterparts. For instance, a UIAsset is a visual representation of an Asset model.

Any change in the application state starts from some user interaction.
If the interaction causes a change in the history state via an undo or a redo, the application always updates the symbol model with a snapshot of itself from the new time frame and as a result, updates the application layout to reflect the updated model.
If the interaction causes some other change in state, one of two things can happen.
If the interaction is a type of editing mechanic, the symbol model gets updated first, then the application layout gets updated to reflect the updated model.
If the interaction purely changes the viewing of the application, only the application layout get updated.
Based on v2.2.0
© 2021 malulleybovo