Base class for authoring logic and data in the SceneGraph. Using components you can author re-usable building blocks of logic and data which can then be added to entities in the scene.
Components are a very low level building block which can be used in many ways. For example:
- Exposing engine level concepts like mesh or sound
- Adding gameplay capabilities like damage or interaction
- Storing an inventory for a character in the game
As components are generic there is no specific way that they must be used. It is up to the needs of your experience if you use one big game component or if you break up logic into many small components.
Classes deriving from component must also specify <final_super>
to be added
to entities. This ensures the class will always derive directly from component
.
Further subclassing of the initial derived component is allowed and does not require
specifying <final_super>
on the derived classes.
Only one instance of a component from each subclass group can be added to an entity at a time. For example, given this group of components, only one light_component can exist on a single entity. To create multiple lights you should use multiple entities.
light_component := class
============================================================================== Component Lifetime
Components move through a series of lifetime functions as they are added to entities, added to the scene, and begin running in the simulation. Components should override these methods to perform setup and run their simulation.
As a component shuts down it will then move through shutdown version of these
functions, giving users the opportunity to clean up any retained state on the
component before it is disposed
.
Lifetime Methods:
OnAddedToScene
OnBeginSimulation -> OnSimulate
Verse using statement |
using { /Verse.org/SceneGraph } |
Members
This class has both data members and functions.
Data
Data Member Name | Type | Description |
---|---|---|
Entity |
entity |
The parent entity of this component.
|
TickEvents |
?tick_events |
Set callbacks to |
Functions
Function Name | Description |
---|---|
OnAddedToScene |
Called when the component is added to the scene by parenting it under the simulation entity or another entity already in the scene.
|
OnBeginSimulation |
Called when the component begins simulating within the scene.
|
OnSimulate |
Called when the component begins simulating within the scene.
|
OnEndSimulation |
Called when the component ends simulation within the scene.
|
OnRemovingFromScene |
Called when the component is about to be removed from the scene.
|
RemoveFromEntity |
Removes the component from the entity.
|
IsInScene |
Succeeds if the component is currently in the scene.
|
IsSimulating |
Succeeds if the component is currently simulating.
|
OnReceive |
Respond to an event being propagated through the scene graph. Returns if the event is consumed, in which case the event will not be passed to the next entity, depending on how the event is being sent through the hierarchy. |