|
|
(4 intermediate revisions by the same user not shown) |
Line 1: |
Line 1: |
| The '''data model''' refers to the declaration, structure, and handling of [[types]], data, and changes on data within [[FrooxEngine]]. The data model allows for change detection, value synchronization, unified structure, and serialization of any and all types that FrooxEngine encounters.
| | {{stub|nocat}} |
|
| |
|
| == Elements ==
| | asdhasd |
| | |
| Everything that gets managed by the data model in some fashion implements the [[Type:IWorldElement|IWorldElement]] interface. This interface assigns elements with a host of properties, including a [[Type:RefID|reference ID]], possible parent element, and whether the element is persistent or not.
| |
| | |
| This interface doesn't have much behavior by itself--it only specifies a thing as being able to be saved and loaded into [[worlds]] in some fashion. More complex behaviors offered by the data model are provided by types that implement this interface. The three types of elements that directly implement this interface are ''sync elements'', ''workers'', and ''worlds''.
| |
| | |
| == Sync elements ==
| |
| | |
| [[Type:SyncElement|Sync elements]] represent a value or object that can be written to, [[field linkage|linked]], and send/receive change events from other elements. Sync elements mainly comprise of [[Type:SyncField|fields]] and various types of collections--usually any type name that starts with <code>Sync</code> derives from a sync element.
| |
| | |
| The main thing that separates sync elements from other elements is, well, synchronization. Whenever a sync element is changed, spare few exceptions like [[Type:RawOutput`1|RawOutput<T>]], it and its entire parent hierarchy propagate a change event. This includes the elements getting put in the world's update manager to synchronize their values at the end of the update loop.
| |
| | |
| == Workers ==
| |
| | |
| [[Type:Worker|Workers]]
| |
| | |
| === World ===
| |
| | |
| Each instance
| |
| | |
| == Strict exclusivity ==
| |
| | |
| The data model can only function without issue when everyone in a session agrees on what the data model should be. This is the reason why [[plugins]] marked as a [[How To Create Plugins/DataModelAssemblyType|core]] assembly type cause incompatible sessions with those who do not have the plugin.
| |
Latest revision as of 17:35, 12 September 2025
This article or section is a stub. You can help the Resonite wiki by expanding it.
asdhasd