Libraries
Libraries are special decls used for declaring types and utilities that are to be shared.
Enumerations
Enumerations are unique types with a discreet range of possible values specified in a list of unique strings.
When specifying for example an object's state of some kind of operating mode you should prefer enumerations to strings because a) they are less error prone (you can't make a typo) and b) they're more efficient.
Enumerations are types with a discreet range of possible values specified in a list of unique strings.
Where possible you should prefer enumerations to strings because a) they are less error prone (you can't make a typo) and b) they're more efficient.
Events
Events should be used for simple communication between graphs and/or entities.
Interfaces
Interfaces are logic designer's equivalent of abstract interfaces in an object oriented programming language.
They are declared in library decls, specifying a set of inputs and outputs for a custom node with which an entity can then communicate with any other entity.
Once an interface has been declared entities must implement the interface, so for example you might create an interactive interface and then implement it in two separate switch and door entities (or any entities that can be interacted with for that matter).
Now an entity wanting to interact with a switch or a door doesn't need to know what type of entity it's dealing with, only that it's interactive.
Events vs Interfaces
It can often be difficult to know when to use events and when to use interfaces.
As a general rule if you have multiple events associated with a particular aspect of an entity you should combine them into an interface, and if you can think of a good way to group commands/notifications into a single interface then you probably should e.g. Damage and Heal events should be moved to a Health interface.
Events should be for either a) very unique commands/notifications or b) notifications that apply to pretty much any object and you don't want to have to implement.