1.1 KiB
1.1 KiB
title | date | weight |
---|---|---|
Component | 2019-05-22T12:51:29-07:00 | 5 |
A Component is a collection of related data.
To define a Component, declare a struct which implements the IComponent interface.
using Encompass;
using System.Numerics;
public struct VelocityComponent : IComponent {
public Vector2 velocity;
}
Components are attached to Entities with the SetComponent method.
using Encompass;
...
var worldBuilder = new WorldBuilder();
var entity = worldBuilder.CreateEntity();
worldBuilder.SetComponent(entity, new VelocityComponent { velocity = Vector2.Zero });
SetComponent can also be used from within an Engine. We will talk more about this later.
Components are always structs, meaning they follow value-type semantics. (Insert link about that here). If you use them idiomatically, you don't have to worry about them being garbage-collected.
{{% notice warning %}} Components should never reference other Components directly. This breaks the principle of loose coupling. You will regret it if you do this. {{% /notice %}}