Conceptually, any type which produces data can be an
IDataSource for that data type, but in practice usage is more constrained (though still pervasive throughout the
Interaction SDK). Descendent types of this
DataSource implementation specifically are also MonoBehaviours; thus, the expectation for descendent types is that they will be long-lived instances which persistently provide data over a period of time, on a schedule specified by UpdateModeFlags but typically tied in some way into MonoBehaviour's built-in update capabilites.