encompass-cs-docs/content/concepts/component.md

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 %}}