Exposed interfaces
An interface is a programming term that means a set of defined functionality that something should implement.
Some entities in the game expect certain properties to be filled with references to other entities. For example, when you're specifying a value for whether something should be enabled,
you'll usually have to reference an entity. This entity is usually an enable condition or a ZValueBool, but can be a couple of other more specialised entities. This flexibility is achieved
through interfaces. The interface this property (m_rEnabledValue) expects is an entity that implements IBoolCondition
; it will accept any such entity being referenced.
Class entities define which interfaces they implement. An assembly:/modules/zvaluebool.class
entity, for example, implements a number of interfaces, including
IBoolCondition
.
Entity templates, however, can also implement these interfaces. This is how there are wrapper entities that add additional functionality to these value entities.
Essentially, if an entity can provide the necessary functionality (the properties/inputs/outputs expected for something that implements an interface), whether through using class entities or using other entity templates, that entity can expose the interface, thereby making it clear to other entities that it can be used in this context.